我正在使用的服务是刷新其SSL证书,现在我的连接到他们的服务失败。 他们在变革之前工作(如在变革之前的一个小时)。
他们的新旧服务器证书应该由Verisign签署。 我如何手动validation证书?
通过openssl x509工具运行它会自动执行吗?
使用openssl s_client连接到他们的服务器,我可以看到他们在SSL握手期间发送的证书。 通过带有-text选项的x509工具运行它,我得到以下发行者行:
Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=Terms of use at https://www.verisign.com/rpa (c)10, CN=VeriSign Class 3 International Server CA - G3
和Subject: CN=值匹配我连接到的主机名。
与s_client连接时,我得到的抱怨是(我省略了主题行,以便不命名该服务):
verify error:num=20:unable to get local issuer certificate verify return:1 verify error:num=27:certificate not trusted verify return:1 verify error:num=21:unable to verify the first certificate verify return:1
任何人都可以告诉我如何找出为什么我的工具不信任这个证书?
我倾向于快速通过curl -Iv https://www.example.com 。 curl会把相关的SSL位转储出来(并且会使用手头的CA列表)。
如果您需要手动执行更多操作,则可以使用正确的选项运行openssl verify ,具体为-CApath选项:
$ openssl verify --help usage: verify [-verbose] [-CApath path] [-CAfile file] [-purpose purpose] [-crl_check] [-engine e] cert1 cert2 ...
我猜你的问题是服务器没有发布中间证书包。 查看https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=AR657 (或者,更确切地说,来自Verisign的关于如何安装证书的电子邮件说明)。
这是因为您的命令行上没有使用-CApath或-CAfile 。 这些参数告诉openssl在目录或特定文件中查找受信任CA文件的位置。
用它:
openssl s_client -CAfile /etc/ssl/ca-bundle.pem -connect www.bofa.com:443 CONNECTED(00000003) depth=3 C = US, O = "VeriSign, Inc.", OU = Class 3 Public Primary Certification Authority verify return:1 depth=2 C = US, O = "VeriSign, Inc.", OU = VeriSign Trust Network, OU = "(c) 2006 VeriSign, Inc. - For authorized use only", CN = VeriSign Class 3 Public Primary Certification Authority - G5 verify return:1 depth=1 C = US, O = "VeriSign, Inc.", OU = VeriSign Trust Network, OU = Terms of use at https://www.verisign.com/rpa (c)06, CN = VeriSign Class 3 Extended Validation SSL CA verify return:1 depth=0 1.3.6.1.4.1.311.60.2.1.3 = US, 1.3.6.1.4.1.311.60.2.1.2 = Delaware, businessCategory = Private Organization, serialNumber = 2927442, C = US, postalCode = 60603, ST = Illinois, L = Chicago, street = 135 S La Salle St, O = Bank of America Corporation, OU = Network Infrastructure, CN = www.bankofamerica.com verify return:1
没有它:
openssl s_client -connect www.bofa.com:443CONNECTED(00000003) depth=3 C = US, O = "VeriSign, Inc.", OU = Class 3 Public Primary Certification Authority verify error:num=19:self signed certificate in certificate chain verify return:0
有一个关键的区别。