使用SSL和WCF进行自托管 - 无法将证书绑定到端口

时间:2011-06-03 13:56:19

标签: wcf ssl

我有一个我想使用SSL访问的WCF服务。我在我的开发者机器上,所以我在考虑自我托管服务。我一直在关注 Configuring HTTP and HTTPS

我创建了一个自签名证书,我将其添加到受信任的根证书颁发机构。我创建了另外两个由第一个签名的证书,一个用于客户端,另一个用于服务器。我按照 Using makecert to create certificates for development

我无法通过SSL证书配置步骤。当我使用netsh将证书绑定到端口号时,它会引发SSL错误:

  

证书添加失败,错误:1312指定的登录会话不存在。它可能已经被终止。

证书是否需要一些特殊字段或其他一些工具才能使用?

CA证书:

makecert -n "CN=TestCA" -cy authority -a sha1 -sv "TestCA.pvk" -r "TEST_CA.cer"

服务证书:

makecert -n "CN=rneapp.com" -ic "TEST_CA.cer"  -iv "TestCA.pvk" -a sha1 -sky exchange -pe -sv "rneapp.com.pvk" "rneapp.com.cer"

客户证书:

makecert -n "CN=rneClient" -ic "TEST_CA.cer"  -iv "TestCA.pvk" -a sha1 -sky exchange -pe -sv "rneClient.pvk" "rneClient.cer"

我正在使用此命令将证书绑定到端口:

netsh http add sslcert ipport=0.0.0.0:8465 certhash=a853f3b5b48b8a506bdc4212ba2726a3bfea2bb6 appid={2E53B9B0-17AE-4EBC-A1AE-43D53A6FD07D} clientcertnegotiation=enable

5 个答案:

答案 0 :(得分:6)

当我遇到同样的问题时,将证书从当前用户移动到本地计算机存储有帮助,所以请尝试检查您的证书存储。

netsh http add sslcert的内置帮助也提及certstorename选项:

        certstorename           - Store name for the certificate. Defaults
                                  to MY. Certificate must be stored in the
                                  local machine context.

答案 1 :(得分:1)

我也会通过创建自签名证书的不同过程遇到类似的错误代码,并找到我自己问题的来源。 Using netsh, bind an SSL certificate to a port number is failing

Here is the article我遵循创建自签名证书,它非常完整和彻底。

答案 2 :(得分:1)

我在Windows 7和Windows Server 2008 R2上遇到完全相同的问题,但对我来说,它是第一次将证书与端口绑定时正在运行。但是,如果我删除绑定(netsh.exe http delete sslcert ipport = 0.0.0.0:9101)并再次使用相同的证书绑定,则会失败。如果我尝试另一个端口,它会失败。如果我创建一个全新的证书,那么我可以再次绑定。但是再次删除/绑定将失败。

我遵循与此问题相同的规则: Can't register a C# generated selfsigned SSL certificate with netsh (error 1312)

我还尝试安装KB981506 http://support.microsoft.com/kb/981506,但无法安装“此更新不适用于您的计算机”。也许我已经拥有它了。

我感觉删除绑定时没有以正确的方式删除某些内容。当我再次尝试绑定时,ProcessMonitor没有显示任何奇怪的东西。

答案 3 :(得分:0)

这似乎是一个已知问题。 Check out this Microsoft KB article

您可能还错误地设置了证书。 Check out this MSDN forum post关于另一个人是如何犯下类似的错误并得到1312错误,这只是让他分散了他的证书配置这个真正的问题。

答案 4 :(得分:0)

我今天遇到了类似的问题,这就是我修复它的方法。当我在本地计算机/我的mmc.exe中看到安装的证书时,我看到我的证书没有带钥匙的图标。

所以当我将* .cer和* .pvk文件与* .pfx结合使用时:

pvk2pfx -pvk "private_key.pvk"  -spc "public.cert" -pfx "test.pfx"

然后使用mmc.exe导入* .pfx文件。

然后执行下一个命令而没有错误:

netsh http add sslcert...
netsh http delete sslcert...

我已将此答案发布到类似的Stack Overflow问题 Can't register a C# generated selfsigned SSL certificate with netsh (error 1312)