我發現了幾個關於如何生成自簽名CA然後頒發服務證書的指南。我可以使用我自己託管的WCF應用程序使用Let's Encrypt證書嗎?
例子: https://www.codeproject.com/Articles/24027/SSL-with-Self-hosted-WCF-Service
我有一點想法有關證書的,所以我的問題是,是讓我們的加密證書與自承載WCF服務兼容嗎?
如果商業CA提供了Let's Encrypt沒有的格式,我可以購買證書。
感謝。
我發現了幾個關於如何生成自簽名CA然後頒發服務證書的指南。我可以使用我自己託管的WCF應用程序使用Let's Encrypt證書嗎?
例子: https://www.codeproject.com/Articles/24027/SSL-with-Self-hosted-WCF-Service
我有一點想法有關證書的,所以我的問題是,是讓我們的加密證書與自承載WCF服務兼容嗎?
如果商業CA提供了Let's Encrypt沒有的格式,我可以購買證書。
感謝。
可以使用Let's Encrypt證書使WCF服務通過https進行通信。您可以使用letsencrypt.org網站上列出的某個Windows客戶端進行設置。
如果您決定使用ACMESharp client,您會注意到一個基本功能尚未完全實現:certificate renewal。
但是,這個問題可以通過使用由Marc Durdin提供的腳本來解決,他提交了on his blog。
設置完ACMESharp客戶端並在腳本中定義變量後,必須創建一個計劃任務,該任務每60天運行一次並執行該腳本。
要使WCF服務使用https綁定,您必須在服務的配置中定義該綁定。
創建一個security
元素。然後,參考endpoint
element的bindingConfiguration
屬性中的父代binding
元素的name
屬性。在同一個endpoint
元素的address
屬性中,您必須指定您的服務可用的HTTPS地址。
如果使用不同於443的端口,則必須像這樣明確定義它:https://hostname.tld:port/ServiceName/
。
完成所有設置後,您必須將由letsencrypt提供的證書綁定到該綁定。您可以使用netsh http add sslcert
命令執行此操作。我寫了下面的腳本,你可以用它來自動執行此過程中結合證書上面提到的更新:如果定義腳本變量
$domain = 'hostname.tld' # insert your hostname
$ipport = '0.0.0.0:portnumber' # insert the proper binding
$getThumb = Get-ChildItem -path cert:\LocalMachine\My | where { $_.Subject -match $domain }
$certHash = $getThumb.Thumbprint
$activeBinding = netsh http show sslcert ipport=$ipport
$activeBindingHash = $activeBinding[5]
$guid = '{' + [guid]::NewGuid() + '}'
If(-Not $activeBindingHash)
{
netsh http add sslcert ipport=$ipport certhash=$certHash appid=$guid
return
}
$hashesMatch = $activeBindingHash | Select-String -Pattern $certHash -Quiet
If(-Not $hashesMatch)
{
netsh http delete sslcert ipport=$ipport
netsh http add sslcert ipport=$ipport certhash=$certHash appid=$guid
}
,並運行一個計劃任務過多,你WCF服務將使用來自Let's Encrypt的ssl證書,該證書將自動更新和反彈。