栏目:SSL证书 作者:小天 点击: 9,941 次
我们在重新安装证书后发现网站无法启动,出现以下错误:
或者绑定网站时发生的类同错误:
以上的报错很可能由于以下几种问题产生:
问题1、最常见的情况是当用户使用IIS MMC卡导入证书,他们取消对“允许此证书导出”。这导致在一个破碎键集,从而导致该问题。
解决方案:
有两种方法来解决这个问题。在我们开始之前关闭,删除/删除存储中的现有证书。
1)如果使用IIS MMC卡导入证书,然后确保“允许此证书导出”被选中。
2)如果使私钥可导出的是不是一个选项,然后使用证书MMC导入证书。请通过以下KB如何使用MMC导入证书:http://support.microsoft.com/kb/232137
问题2、另一个原因,这可能会导致一个破碎的键集,是由于在MachineKeys的文件夹中缺少权限。这是在所有的私有密钥被存储的位置。文件夹路径(IIS7以上)是如下图所示:C:\ ProgramData\ MICROSOFT \Crypto\ RSA\ MachineKeys的
在此文件夹的默认权限在下面的文章中描述:
http://support.microsoft.com/kb/278381
http://msdn.microsoft.com/en-us/library/ee248638(v=vs.100).aspx
解决方案:
首先,删除/移除破损证书的存储区。确保权限是按照上面提到的文章。因此,我们需要权限的Administrators和Everyone的帐户。千万要记得选择,如下图:
注意:有可能是一种可能性,这个问题甚至可能在确保正确的权限可以看出。在这种情况下,使用procmon.exe工具,并固定在MachineKeys文件夹内的特定文件的访问被拒绝的错误。
你也可以尝试给系统帐户MachineKeys文件夹的完全权限。
之后,在方案1中描述给予必要的权限,重新导入证书。
问题3、还有另外一种可能,即确保了上述两种甚至之后可能会出现的问题。我观察到这种行为通常是在Windows Server 2008上的这取决于证书的KeySpec财产。
该KeySpec属性指定私钥是否可用于加密或签名,或二者兼有。
下面的MSDN文章描述KeySpec属性:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa379020%28v=vs.85%29.aspx
为了检查该证书的KeySpec属性,使用下面的命令:
certutil -v -store my <thumbprint>
注:在上面的命令中的指纹信息可以在证书的详细信息选项卡中找到。以下是有效的命令:
certutil -v -store my "32 b5 39 8e d3 c9 c6 f1 a3 50 bc d4 b5 14 eb b5 a4 5d 1f c6"
certutil -v -store my "32b5398ed3c9c6f1a350bcd4b514ebb5a45d1fc6"
certutil -v -store my 32b5398ed3c9c6f1a350bcd4b514ebb5a45d1fc6
获取上述命令的输出中一个记事本,然后搜索KeySpec,这是CERT_KEY_PROV_INFO_PROP_ID节的一部分。该KeySpec表示为十六进制值。
如上所述它上面可以采取三个值:
因此,如果KeySpec值设置为任何大于1的其他的问题是更可能是当CSR是使用定制模板生成,而不是指定的KeySpec被发生的问题能够被看见。
每当没有明确指定KeySpec属性,它需要2即默认值,它可用于仅签名的目的。
解决方案:
所以,你需要记住的一件事是,KeySpec属性必须明确指定。
1)如果您是通过生成的代码证书,然后确保你的KeySpec属性明确设置为1。
2)如果使用的certreq.exe工具以及一个inf文件提交请求到SAN中,确保你明确指定KeySpec属性为1。
参考自文章:http://support.microsoft.com/kb/931351
3)Remember在创建证书签名请求中指定的KeySpec属性。一旦证书已颁发此不能修改。所以记得要设置适当的值。
4)Also与密钥用法属性比较KeySpec并确保两者匹配逻辑。
例如,对于证书的KeySpec等于AT_KEYEXCHANGE,密钥用法应该是
XCN_NCRYPT_ALLOW_DECRYPT_FLAG| XCN_NCRYPT_ALLOW_KEY_AGREEMENT_FLAG。
XCN_NCRYPT_ALLOW_USAGES_NONE The permitted uses are not defined. |
XCN_NCRYPT_ALLOW_DECRYPT_FLAG The key can be used to decrypt content. This maps to the following X509KeyUsageFlags values:
|
XCN_NCRYPT_ALLOW_SIGNING_FLAG The key can be used for signing. This maps to the following X509KeyUsageFlags values:
|
XCN_NCRYPT_ALLOW_KEY_AGREEMENT_FLAG The key can be used to establish key agreement between entities. |
XCN_NCRYPT_ALLOW_ALL_USAGES All of the uses defined for this enumeration are permitted. |
声明: 本文由( 小天 )原创编译,转载请保留链接: 解决IIS 7+ 安装证书时出现HRESULT:0X80070020错误 [详解]
------====== 本站公告 ======------
欢迎使用趣域网域名百科,我们将长期提供域名使用相关知识和投资域名的方法和技巧;并提供主机、服务器的解决问题和网站运营方法。