2011-06-03 86 views
3

我有一个我想使用SSL访问的WCF服务。我在我的开发人员机器上,所以我正在考虑自行托管该服务。我一直在关注Configuring HTTP and HTTPS使用SSL和WCF进行自托管 - 无法将证书绑定到端口

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

我无法超越SSL证书配置步骤。当我的证书绑定使用netsh它抛出一个SSL错误的端口号:

Certificate add failed, Error: 1312 A specified logon session does not exist. It may already have been terminated.

是否证书需要为此一些特殊领域或其他一些东西的工作?

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

你是如何确定最后命令的appid的? – Paul 2011-07-18 02:15:17

+0

我为appid生成了一个GUID。 http://stackoverflow.com/questions/537173/what-appid-should-i-use-with-netsh-exe – Megacan 2011-07-27 15:54:01

+0

你应该能够从AssemblyInfo.cs/vb文件获得appid – rotard 2012-02-03 22:05:00

回答

0

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

您也可能会错误地设置证书。 Check out this MSDN forum post对于另一个人是如何犯类似错误,并得到1312错误,只是分心他的真实问题,这是他的证书配置。

+0

该修补程序仅适用于Windows 7和Windows Server 2008,我使用的是Windows Vista。 :\ – Megacan 2011-06-03 14:30:05

+0

增加了一些关于可能错误地设置证书的更多细节。如果不是链接到您使用的文章,而是发布了用于生成密钥的确切makecert选项,那么我们可以确保您实际选择了正确的选项,这样做会更有帮助。 – 2011-06-03 15:20:08

+0

你说得对,对不起。发布我用来生成证书的确切命令。 – Megacan 2011-06-03 15:48:20

5

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

内置帮助netsh http add sslcert也对于certstorename选项提到了这一点:

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

+1,这工作完美。我从代码存储证书,只需将新的X509Store(StoreName.My)更改为新的X509Store(StoreName.My,StoreLocation.LocalMachine); – Despertar 2012-09-22 21:04:53

1

我有完全的Windows 7同样的问题和Windows Server 2008 R2,但对我来说这是工作,我第一次将证书与端口绑定。但是,如果我删除绑定(netsh.exe http删除sslcert支持= 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不会显示任何奇怪的东西。

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... 

我已经张贴了这个答案类似的堆栈溢出的问题,Can't register a C# generated selfsigned SSL certificate with netsh (error 1312)

相关问题