使用netsh,将SSL证书绑定到端口号失败

时间:2012-03-09 22:13:48

标签: windows-7 ssl-certificate wcf-binding netsh

我已按照 SSL with Self Hosted WCF Service 中的说明操作。当我尝试使用netsh在Windows 7上绑定证书时,如How to: Configure a Port with an SSL Certificate.中所述,它失败如下。

在Windows PowerShell

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.

9 个答案:

答案 0 :(得分:29)

我永远与之斗争,让我的IIS Express正确地进行SSL。事实证明,我的证书位于受信任的根证书颁发机构商店,而不是个人证书商店。这对我有用:

  1. 确保您的证书位于“证书(本地计算机)/个人/证书”
  2. netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
  3. 成功添加SSL证书
  4. 使用MMC并将证书拖到任何您想要的位置。

答案 1 :(得分:15)

我在端口绑定中找到了4个可能的错误原因1312:

  • SSL证书已损坏 - 您需要从证书存储区删除并重新添加。
  • SSL证书缺少私钥 - 您需要从证书存储区删除并重新添加完整的公共/私有证书,或以其他方式将私钥附加到您的证书。
  • 如果在SP1之前版本的2012R2上安装,则可能需要KB 981506。
  • 您可能已将SSL证书添加到用户存储,而不是本地计算机证书存储 - 从用户存储中删除并添加到计算机存储。

答案 2 :(得分:12)

错误的来源是我直接从signroot.cert的证书文件中获取了ThumbPrint,该文件是从创建“受信任的根证书颁发机构”所需的第一个makecert命令创建的,该命令再次用于真正创建(并安装)第二个makecert命令中的self-sigend可信证书。

第二个makecert命令还会在“证书(本地计算机) - &gt;个人 - &gt;证书”节点中安装创建的证书。必须再次刷新当前打开的MMC以查看“localhost”证书,并且需要从此证书中获取ThumbPrint,而不是从signroot.cert获取。

如果仍然不是这样,可能需要从M $安装此修补程序。 http://support.microsoft.com/kb/981506

参考:http://social.technet.microsoft.com/Forums/en/winservergen/thread/68452008-a89b-40ba-9927-472efcfafc99

答案 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命令。

Full information