当我连接到我的网络服务器以通过 HTTPS 查看网站时,地址栏中会出现漂亮的绿色 EV 标志。当我在本地使用 curl 进行连接时,它会抱怨证书问题并死机。
我知道我可以跳过证书检查,但我想解决这个问题,因为有时这些证书会在本地进行检查。
我的主机文件(在服务器上)将 www.domain.com 映射到 192.168.100.62。Apache 正在监听该地址(通过 http 对同一地址执行 cURL 来确认):
root@web3:~# curl -v https://www.domain.com
* About to connect() to www.domain.com port 443 (#0)
* Trying 192.168.100.62... connected
* Connected to www.domain.com (192.168.100.62) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* Peer's certificate issuer is not recognized: 'CN=Symantec Class 3 EV SSL CA - G3,OU=Symantec Trust Network,O=Symantec Corporation,C=US'
* NSS error -8179
* Closing connection #0
* Peer certificate cannot be authenticated with known CA certificates
curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details here: http://curl.haxx.se/docs/sslcerts.html
我已经在谷歌上搜索了一下,但似乎找不到太多信息...可能是我的根 CA 捆绑包已经过时,或者 curl 本身太旧而无法连接,但我对此没有太多经验。
root@web3:~# curl --version
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.18 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
cat /etc/redhat-release Red Hat Enterprise Linux Server 版本 6.7(圣地亚哥)
我曾尝试使用该工具添加 verisign 根证书update-ca-trust
,但这也没有影响:
root@web3:anchors# pwd
/etc/pki/ca-trust/source/anchors
root@web3:anchors# ls
VeriSign-Class-3-Public-Primary-Certification-Authority-G3.crt
root@web3:anchors# update-ca-trust
root@web3:anchors# curl... <snip> same error.
我有点搞不清楚实际问题是什么。证书是否只在互联网 IP 上有效?
答案1
编辑(2018-12-20):安全警告:安装来自未知来源的证书存在安全风险。
我通过下载 Symantec_Class_3_EV_SSL_CA_G3.crt 并安装它解决了该问题:
wget http://symantec.tbs-certificats.com/Symantec_Class_3_EV_SSL_CA_G3.crt
cp Symantec_Class_3_EV_SSL_CA_G3.crt /etc/pki/ca-trust/source/anchors
update-ca-trust
然后问题就解决了:) 不确定为什么它没有默认包含在根 CA 包中。