Windows 7 使用netsh将SSL证书绑定到端口号失败
我已按照中的说明进行操作。如中所述,当我尝试在Windows 7上使用netsh绑定证书时,失败如下 在窗户里Windows 7 使用netsh将SSL证书绑定到端口号失败,windows-7,ssl-certificate,wcf-binding,netsh,Windows 7,Ssl Certificate,Wcf Binding,Netsh,我已按照中的说明进行操作。如中所述,当我尝试在Windows 7上使用netsh绑定证书时,失败如下 在窗户里 错误的来源是我直接从signroot.cert的证书文件中获取了指纹,该文件是从创建“受信任的根证书颁发机构”所需的第一个makecert命令创建的,该命令再次用于在第二个makecert命令中真正创建(并安装)自签名受信任证书 第二个makecert命令还将创建的证书安装在“证书(本地计算机)->个人->证书”节点中。必须再次刷新当前打开的MMC才能看到“本地主机”证书,指纹需要从此
错误的来源是我直接从signroot.cert的证书文件中获取了指纹,该文件是从创建“受信任的根证书颁发机构”所需的第一个makecert命令创建的,该命令再次用于在第二个makecert命令中真正创建(并安装)自签名受信任证书 第二个makecert命令还将创建的证书安装在“证书(本地计算机)->个人->证书”节点中。必须再次刷新当前打开的MMC才能看到“本地主机”证书,指纹需要从此证书而不是从signroot.cert获取 如果情况仍然不是这样,则可能需要从M$安装此修补程序。
参考:我注意到你的问题中有以下几点。它可能无法解决原始问题,但此处的语法不正确
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
实际上,这与刷新无关。我在同一个问题上浪费了太多时间。如果重新安装,则不会遇到此问题,但如果尝试以下操作,则会出现问题:
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值,该命令将正常工作。为了让我的IIS Express正确执行SSL,我一直在努力解决此问题。事实证明,我的证书位于受信任的根证书颁发机构存储中,而不是个人证书存储中。这就是我的工作原理:
netsh http add sslcert ipport=0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
我在端口绑定中找到了导致错误1312的4个可能原因:
- SSL证书已损坏-您需要从证书存储中删除并重新添加。
- SSL证书缺少私钥-您需要从证书存储中删除并重新添加完整的公钥/私钥证书,或者将私钥附加到证书。
- 如果安装在2012R2的SP1之前版本上,则可能需要KB 981506。
- 您可能已将SSL证书添加到用户存储中,而不是本地计算机证书存储-从用户存储中删除并添加到计算机存储中。
C:\>netsh http add sslcert ipport=0.0.0.0:8732 certstorename=AuthRoot certhash=...
对我来说,关键是放弃使用IE进行导入,这是我通常做的事情 使用mmc.exe,文件->添加/删除管理单元并添加“证书”。管理计算机帐户,然后管理“本地计算机” 将根证书导入证书(本地计算机)/受信任的根证书颁发机构/证书 将客户端证书导入到个人/证书中,然后执行netsh http add sslcert。“官方”(非自签名)证书(例如来自Thawte)导入到证书存储中:“受信任的根证书颁发机构”。
如果netsh命令中没有传递参数“certstorename=”,netsh将接受表示“私有”存储的“MY”。
要绑定官方证书,您必须添加:
certstorename=Root
到netsh命令
另一件需要注意的事情是,从MMC控制台证书属性窗口复制/粘贴证书散列,也可能在散列的开始处带来一个有趣的字符。您不会看到它,因为该字符在您的文本编辑器可能使用的UTF-8编码中是不可见的 Netsh没有帮助,因为它只是不断地失败,“参数不正确”,而没有透露哪个参数;)
将编码更改为ANSI将显示字符,将其删除,它将像一个符咒一样工作感谢您发布此消息-对我来说非常有效。我没有刷新,因此我也在查看第一个证书的指纹。一旦我刷新并获得新指纹,一切都很好,并按预期添加。我最近遇到了此问题。我解决了我的问题如下:注意,{}是powershell中的子命令,这就是引用是必要的原因。没错,我有相同的错误,并用您的第二个建议解决了它,我删除了它,然后导入了包含公钥和私钥的.pfx。这是有问题的,因为您使用powershell,它对大括号的解释不同
1. Import same certificate again
2. You create a new certificate and try to bind it which has same parameters, namely the CN value.
C:\>netsh http add sslcert ipport=0.0.0.0:8732 certstorename=AuthRoot certhash=...
certstorename=Root