SSL 认证链不适用于自签名证书
SSL chain of certification not working for a self signed certificate
一位客户给了我们 3 个证书,这些证书按顺序安装在 windows 服务器上,并且:
- 由 Verisign 颁发,适用于 Symantec(仅证书,安装为
中级)
- 由 Symantec 颁发,适用于 CompanyX(仅证书,
作为中间安装)
- 由 CompanyX 发布,适用于 CompanyX
(证书和密钥,安装为个人)
在 mmc 中,当我检查 #2 时,我可以看到链为:
威瑞信(根)
-> 威瑞信(中级)
--> 赛门铁克(中级)
检查#3(自签名证书)时,没有链。只有 CompanyX。
似乎 windows 未能在最后一个中间证书和自签名证书之间建立链,因此当客户端连接到 Web 服务器时,他们会看到自签名或不受信任的证书警告,大概是因为服务器未发布中间证书。
我已经验证了通用名称完全匹配,并重复了几次安装过程。我在安装证书时做错了什么吗?我错过了什么吗?
证书 #3 不是 VeriSign 颁发的证书的一部分。它可以是从节点复制的不完整请求的虚拟证书(在证书 MMC 中)。如果是这种情况(比较 public 密钥或 Subject Key Identifier
扩展值)#2 和 #3 证书。如果它们匹配,将证书 #3 移动到 Certificate Enrollment Requests
节点。
您的客户需要做的是转到生成原始请求的机器(我怀疑是在 IIS 服务器上)并尝试通过 运行ning 以下命令正确安装颁发的证书:
certreq -accept path\certNo2.cer
如果命令成功,证书将自动安装到个人存储中。如果命令失败,客户必须找到生成请求的机器和运行上面的命令。
仅供记录和未来可能的搜索,以下是我的解决方法:
由于#3 和#2 具有相同的主题(和 public 密钥),并且我有#3 的私钥但没有#2,我想尝试使用#3 的私钥#2 证书,所以:
使用 openssl pkcs12 -in Cert3.pfx -nocerts -nodes
从 #3 中提取密钥。其中 Cert3.pfx 是带有密钥的 #3 证书,它会创建一个新的 Cert3.key 文件,其中只有私钥。
使用 openssl pkcs12 -export -out 'NewCert2.pfx' -inkey Cert3.key -in Cert2.cer
将 #2 证书与提取的密钥合并。其中 Cert2.cer 是没有密钥的 #2,并创建 NewCert2.pfx 并合并了 #2 证书和 #3 密钥。
已从个人存储中删除#3 并从中级存储中删除#2。
将新合并的 #2 导入个人商店。
更新了新证书的 IIS 绑定。
结果是使用 #2 作为 SSL 证书,已经用 SSL-Checker 测试过,一切正常。
一位客户给了我们 3 个证书,这些证书按顺序安装在 windows 服务器上,并且:
- 由 Verisign 颁发,适用于 Symantec(仅证书,安装为 中级)
- 由 Symantec 颁发,适用于 CompanyX(仅证书, 作为中间安装)
- 由 CompanyX 发布,适用于 CompanyX (证书和密钥,安装为个人)
在 mmc 中,当我检查 #2 时,我可以看到链为:
威瑞信(根) -> 威瑞信(中级) --> 赛门铁克(中级)
检查#3(自签名证书)时,没有链。只有 CompanyX。
似乎 windows 未能在最后一个中间证书和自签名证书之间建立链,因此当客户端连接到 Web 服务器时,他们会看到自签名或不受信任的证书警告,大概是因为服务器未发布中间证书。
我已经验证了通用名称完全匹配,并重复了几次安装过程。我在安装证书时做错了什么吗?我错过了什么吗?
证书 #3 不是 VeriSign 颁发的证书的一部分。它可以是从节点复制的不完整请求的虚拟证书(在证书 MMC 中)。如果是这种情况(比较 public 密钥或 Subject Key Identifier
扩展值)#2 和 #3 证书。如果它们匹配,将证书 #3 移动到 Certificate Enrollment Requests
节点。
您的客户需要做的是转到生成原始请求的机器(我怀疑是在 IIS 服务器上)并尝试通过 运行ning 以下命令正确安装颁发的证书:
certreq -accept path\certNo2.cer
如果命令成功,证书将自动安装到个人存储中。如果命令失败,客户必须找到生成请求的机器和运行上面的命令。
仅供记录和未来可能的搜索,以下是我的解决方法:
由于#3 和#2 具有相同的主题(和 public 密钥),并且我有#3 的私钥但没有#2,我想尝试使用#3 的私钥#2 证书,所以:
使用
openssl pkcs12 -in Cert3.pfx -nocerts -nodes
从 #3 中提取密钥。其中 Cert3.pfx 是带有密钥的 #3 证书,它会创建一个新的 Cert3.key 文件,其中只有私钥。使用
openssl pkcs12 -export -out 'NewCert2.pfx' -inkey Cert3.key -in Cert2.cer
将 #2 证书与提取的密钥合并。其中 Cert2.cer 是没有密钥的 #2,并创建 NewCert2.pfx 并合并了 #2 证书和 #3 密钥。已从个人存储中删除#3 并从中级存储中删除#2。
将新合并的 #2 导入个人商店。
更新了新证书的 IIS 绑定。
结果是使用 #2 作为 SSL 证书,已经用 SSL-Checker 测试过,一切正常。