C# 我可以使用Let';s是否使用我的自托管WCF应用程序加密证书?

C# 我可以使用Let';s是否使用我的自托管WCF应用程序加密证书?,c#,wcf,ssl,C#,Wcf,Ssl,我已经找到了一些关于如何为服务生成自签名CA和证书的指南 例如: 我对证书知之甚少,所以我的问题是,Let's Encrypt证书是否与自托管WCF服务兼容 我可以买一个证书,如果一个商业CA提供了一种让我们加密的格式,而不是 谢谢。可以使用Let's Encrypt证书使WCF服务通过https进行通信。您可以使用网站上列出的windows客户端之一进行设置。 如果您决定使用,您将注意到一个基本功能尚未干净地实现:。 但是,这个问题可以通过使用Marc Durdin提供的脚本来解决。 设置A

我已经找到了一些关于如何为服务生成自签名CA和证书的指南

例如:

我对证书知之甚少,所以我的问题是,Let's Encrypt证书是否与自托管WCF服务兼容

我可以买一个证书,如果一个商业CA提供了一种让我们加密的格式,而不是


谢谢。

可以使用Let's Encrypt证书使WCF服务通过https进行通信。您可以使用网站上列出的windows客户端之一进行设置。
如果您决定使用,您将注意到一个基本功能尚未干净地实现:。
但是,这个问题可以通过使用Marc Durdin提供的脚本来解决。
设置ACMESharp客户端并在脚本中定义变量后,必须创建一个计划任务,该任务每60天运行一次并执行脚本

要使WCF服务使用https绑定,您必须在服务的配置中定义该绑定。
创建一个元素。然后,在的
bindingConfiguration
属性中引用父
binding
元素的
name
属性。在同一
端点
元素的
地址
属性中,您必须指定服务可用的https地址。
如果使用不同于443的端口,则必须像这样显式定义它:
https://hostname.tld:port/ServiceName/

设置好所有这些之后,您必须将letsencrypt提供的证书绑定到该绑定。您可以使用命令执行此操作。我编写了以下脚本,您可以使用该脚本将此过程与上述证书的续订一起自动化:

$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证书,该证书将自动更新和恢复