35

我已按照SSL with Self Hosted WCF Service中的说明进行操作。当我尝试使用 netsh 在 Windows 7 上绑定证书时,如如何:使用 SSL 证书配置端口中所述。,它失败如下。

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

9 回答 9

31

我一直为此奋斗,以使我的 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 并将证书拖动到任何您想去的地方。
于 2013-08-21T21:27:18.923 回答
15

我在端口绑定中发现了 4 个可能导致错误 1312 的原因:

  • SSL 证书已损坏 - 您需要从证书存储中删除并重新添加。
  • SSL 证书缺少私钥 - 您需要从证书存储中删除并重新添加完整的公共/私有证书,或者将私钥附加到您的证书。
  • 如果在 2012R2 的 SP1 之前的版本上安装,您可能需要 KB 981506。
  • 您可能已将 SSL 证书添加到您的用户存储,而不是本地计算机证书存储 - 从用户存储中删除并添加到计算机存储。
于 2015-03-16T15:30:32.247 回答
12

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

第二个 makecert 命令还将创建的证书安装在“证书(本地计算机)-> 个人-> 证书节点”中。必须再次刷新当前打开的 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

于 2012-03-10T00:07:13.570 回答
8

我们遇到了同样的错误,经过很长时间,我们意识到 netsh 并没有浏览所有本地机器存储来查找“certhash”参数标识的证书。默认情况下,它仅在“个人”存储中搜索证书。

由于我们的证书不在“个人”存储中,而是在“受信任的根证书颁发机构”存储中,因此通过在 netsh 命令中添加“certstorename”参数解决了问题:

C:\>netsh http add sslcert ipport=0.0.0.0:8732 certstorename=AuthRoot certhash=...  
于 2015-08-11T22:14:23.403 回答
4

另一件需要注意的事情是,从 MMC 控制台证书属性窗口复制/粘贴证书哈希,也可能在哈希的开头带来一个有趣的字符。你不会看到它,因为这个字符在你的文本编辑器可能使用的 UTF-8 编码中是不可见的!

Netsh 没有帮助,因为它只是在“参数不正确”的情况下不断失败,而没有透露哪个参数;)

将编码更改为 ANSI 显示字符,删除它,它会像一个魅力一样工作

于 2017-02-19T14:26:17.137 回答
3

我在您的问题中注意到以下内容。它可能无法解决原始问题,但这里的语法不正确。

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}'
于 2012-04-05T19:44:48.997 回答
2

对我来说,关键是放弃使用 IE 进行导入,这是我通常所做的/所做的。

使用 mmc.exe,File->Add/Remove Snap-in 并添加“证书”。管理计算机帐户,然后管理“本地计算机”。

将根证书导入证书(本地计算机)/受信任的根证书颁发机构/证书。

将客户端证书导入 Personal/Certificates,然后执行 netsh http add sslcert。

于 2016-04-04T23:49:23.487 回答
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 值,该命令将起作用。

于 2012-08-17T16:10:49.350 回答
0

“官方”(自签名)证书(例如来自 Thawte)被导入证书存储区:“受信任的根证书颁发机构”。
如果在 netsh 命令中未传递参数“certstorename=”,则 netsh 采用代表“私人”存储的“MY”。
要绑定官方证书,您必须添加:

certstorename=Root

到 netsh 命令。

完整信息

于 2017-01-18T13:51:08.320 回答