当前位置:  开发笔记 > 后端 > 正文

SSL握手失败 - 一个verisign链证书 - 包含两个CA签名证书和一个自签名证书

如何解决《SSL握手失败-一个verisign链证书-包含两个CA签名证书和一个自签名证书》经验,为你挑选了2个好方法。

我遇到了问题并尝试调试它.我们购买了Verisign证书.当我们使用时:

openssl> s_client -connect myweb.com:443 -showcerts

SSL握手永远不会完成,最后我们会看到错误:

Verify return code: 19 (self signed certificate in certificate chain)

它显示3个---BEGIN/END CERTIFICATE---标签.链中的两个证书是Verisign签署的,但其中一个是自签名的.

    如果有人可以解释这个自签名证书如何出现在CA签名证书中?

    这个错误是否19 (self signed certificate in certificate chain)良性?如果没有,可能是什么原因造成的?

    客户端在受信任存储中具有CA证书,但自签名证书没有任何内容.你认为这可能导致问题吗?如果是,我该怎么做:

      如何从链证书中删除自签名证书,只留下链中的2个CA签名证书?

      在客户端信任存储上添加此自签名证书?

Bruno.. 72

CA颁发的根证书只是自签名证书(可以反过来用于颁发中间CA证书).除了在许多浏览器或操作系统信任锚中默认导入它们之外,它们没有太多特别之处.

虽然浏览器和某些工具被配置为默认情况下在位置中查找可信CA证书(其中一些可能是自签名的),但据我所知,openssl命令不是.

因此,任何提供完整证书链的服务器,从其最终实体证书(服务器证书)到根CA证书(可能具有中间CA证书),都将在链中具有自签名证书:根CA .

openssl s_client -connect myweb.com:443 -showcerts没有任何特别的理由相信Verisign的根CA证书,并且因为它是自签名的,您将获得" 证书链中的自签名证书 ".

如果您的系统具有默认情况下受信任的证书包的位置(我认为/etc/pki/tls/certs在RedHat/Fedora和/etc/ssl/certsUbuntu/Debian上),您可以配置OpenSSL以将它们用作信任锚,例如:

openssl s_client -connect myweb.com:443 -showcerts -CApath /etc/ssl/certs

我不认为OSX默认有一个,因为它依赖于Keychain.您可以进入Keychain Access,选择"System Roots"中的所有证书(除了那些证据除外),右键单击并将所有项目导出到PEM文件中,然后使用`-CAfile`(而不是`-CApath `)指向该文件. (5认同)

OS X的-CApath是什么? (2认同)


Brettski.. 8

听起来好像缺少中间证书. 截至2006年4月,VeriSign颁发的所有SSL证书都要求安装中级CA证书.

可能是您没有在服务器上加载整个证书链.某些企业不允许其计算机下载其他证书,导致无法完成SSL握手.

以下是有关中间链的一些信息:
https://knowledge.verisign.com/support/ssl-certificates-support/index ? page = content& id =
AR657 https://knowledge.verisign.com/support/ssl-certificates-support /指数?页=含量&ID = AD146

中级CA证书



1> Bruno..:

CA颁发的根证书只是自签名证书(可以反过来用于颁发中间CA证书).除了在许多浏览器或操作系统信任锚中默认导入它们之外,它们没有太多特别之处.

虽然浏览器和某些工具被配置为默认情况下在位置中查找可信CA证书(其中一些可能是自签名的),但据我所知,openssl命令不是.

因此,任何提供完整证书链的服务器,从其最终实体证书(服务器证书)到根CA证书(可能具有中间CA证书),都将在链中具有自签名证书:根CA .

openssl s_client -connect myweb.com:443 -showcerts没有任何特别的理由相信Verisign的根CA证书,并且因为它是自签名的,您将获得" 证书链中的自签名证书 ".

如果您的系统具有默认情况下受信任的证书包的位置(我认为/etc/pki/tls/certs在RedHat/Fedora和/etc/ssl/certsUbuntu/Debian上),您可以配置OpenSSL以将它们用作信任锚,例如:

openssl s_client -connect myweb.com:443 -showcerts -CApath /etc/ssl/certs


我不认为OSX默认有一个,因为它依赖于Keychain.您可以进入Keychain Access,选择"System Roots"中的所有证书(除了那些证据除外),右键单击并将所有项目导出到PEM文件中,然后使用`-CAfile`(而不是`-CApath `)指向该文件.
OS X的-CApath是什么?

2> Brettski..:

听起来好像缺少中间证书. 截至2006年4月,VeriSign颁发的所有SSL证书都要求安装中级CA证书.

可能是您没有在服务器上加载整个证书链.某些企业不允许其计算机下载其他证书,导致无法完成SSL握手.

以下是有关中间链的一些信息:
https://knowledge.verisign.com/support/ssl-certificates-support/index ? page = content& id =
AR657 https://knowledge.verisign.com/support/ssl-certificates-support /指数?页=含量&ID = AD146

中级CA证书

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有