我已按照 SSL with Self Hosted WCF Service 中的说明操作。当我尝试使用netsh在Windows 7上绑定证书时,如How to: Configure a Port with an SSL Certificate.中所述,它失败如下。
PS C:\> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Bad numeric constant: 224.
At line:1 char:104
+ netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF}
+ CategoryInfo : ParserError: (224:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant
C:\>netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
SSL Certificate add failed, Error: 1312
A specified logon session does not exist. It may already have been terminated.
答案 0 :(得分:29)
我永远与之斗争,让我的IIS Express正确地进行SSL。事实证明,我的证书位于受信任的根证书颁发机构商店,而不是个人证书商店。这对我有用:
netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
答案 1 :(得分:15)
我在端口绑定中找到了4个可能的错误原因1312:
答案 2 :(得分:12)
错误的来源是我直接从signroot.cert的证书文件中获取了ThumbPrint,该文件是从创建“受信任的根证书颁发机构”所需的第一个makecert命令创建的,该命令再次用于真正创建(并安装)第二个makecert命令中的self-sigend可信证书。
第二个makecert命令还会在“证书(本地计算机) - &gt;个人 - &gt;证书”节点中安装创建的证书。必须再次刷新当前打开的MMC以查看“localhost”证书,并且需要从此证书中获取ThumbPrint,而不是从signroot.cert获取。
如果仍然不是这样,可能需要从M $安装此修补程序。 http://support.microsoft.com/kb/981506
答案 3 :(得分:7)
我们遇到了同样的错误,经过长时间的努力,我们意识到netsh没有浏览所有本地机器商店来查找“certhash”参数标识的证书。默认情况下,它仅搜索“个人”商店中的证书。
由于我们的证书不在“个人”商店中,而是在“受信任的根证书颁发机构”商店中,因此通过在netsh命令中添加“certstorename”参数来解决问题:
C:\>netsh http add sslcert ipport=0.0.0.0:8732 certstorename=AuthRoot certhash=...
答案 4 :(得分:3)
另一件需要注意的事情是从MMC控制台证书属性窗口复制/粘贴证书哈希,也可能在哈希的开头带来一个有趣的字符。您将看不到它,因为您的文本编辑器可能使用的UTF-8编码中的此字符是不可见的!
Netsh没有帮助,因为它只是在没有透露哪个参数的情况下继续使用“参数不正确”;)
将编码更改为ANSI会显示char,删除它并且它将像魅力一样工作
答案 5 :(得分:2)
对我而言,关键是放弃使用IE进行导入,这是我通常做的事情。
使用mmc.exe,文件 - >添加/删除管理单元并添加“证书”。管理计算机帐户,然后管理“本地计算机”。
将根证书导入证书(本地计算机)/受信任的根证书颁发机构/证书。
将客户端证书导入个人/证书,然后执行netsh http add sslcert。
答案 6 :(得分:1)
我在你的问题中注意到以下内容。它可能无法解决原始问题,但此处的语法不正确。
PS C:\> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Bad numeric constant: 224.
At line:1 char:104
+ netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF}
+ CategoryInfo : ParserError: (224:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant
使用此代码(在单引号“{}”中使用appid):
netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
答案 7 :(得分:1)
实际上它与刷新无关。我在同样的问题上浪费了太多时间。如果您进行全新安装,则不会遇到此问题,但如果您尝试执行以下操作,则会出现问题:
1. Import same certificate again
2. You create a new certificate and try to bind it which has same parameters, namely the CN value.
要解决此问题,请从证书存储区和IIS服务器缓存中正确删除此证书,或者(仅用于开发目的)创建新证书,但使用不同的CN值,该命令将起作用。< / p>
答案 8 :(得分:0)
&#34;官方&#34; (不自签名)证书(例如来自Thawte)将在证书库中导入:“受信任的根证书颁发机构”。
如果没有参数&#34; certstorename =&#34;在netsh命令中传递,netsh需要&#34; MY&#34;什么代表&#34;私人&#34;商店。
要绑定官方证书,您必须添加:
certstorename=Root
到netsh命令。