我有一个我想使用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
答案 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) 。