我最近从Comodo购买了免费的SSL证书。它带有一个证书颁发机构捆绑文件,其中包含所有中间证书以及根证书。当我运行命令“ openssl s_client -connect www.mydomain.com:443 -showcerts”时,它显示的证书路径如下所示:
depth = 4 C = SE,O = AddTrust AB,OU = AddTrust外部TTP网络,CN = AddTrust外部CA根
验证回报:1
depth = 3 C =美国,ST = UT,L =盐湖城,O = USERTRUST网络,OU = http://www.usertrust.com,CN = UTN-USERFirst-Hardware
验证回报:1
深度= 2 C = GB,ST =大曼彻斯特,L =索尔福德,O = COMODO CA Limited,CN = COMODO认证机构
验证回报:1
深度= 1 C = GB,ST =大曼彻斯特,L =索尔福德,O = COMODO CA Limited,CN = EssentialSSL CA
验证回报:1
depth = 0 OU =已验证域控制,OU =免费SSL,CN = www.mydomain.com
验证回报:1
但是,当我在任何浏览器中访问www.mydomain.com并查看服务器提供的证书时,它会显示以下证书路径(来自IE9证书窗口):
科摩多
EssentialSSL CA
www.mydomain.com
请注意,链中的证书较少(openssl命令的深度为2到4),并且根证书是COMODO证书,而不是AddTrust外部CA根证书。有人可以解释为什么浏览器显示的路径不同于openssl命令吗?
请注意,在两种情况下,服务器提供的证书链均通过验证(验证来自openssl的结果0,浏览器中没有警告)。
最佳答案
IE9在其信任链中将comodo ca作为受信任的权威,因此不显示comodo ca的签名者。
OpenSSL s_client -showcerts显示整个证书链。