我有一台 CentOS 5.9 服务器,我需要从该服务器与另一台服务器建立 SSL 连接。远程服务器具有最终由 GeoTrust Global CA 签名的证书。在撰写本文时,该证书是GeoTrust 下载页面上列出的第二个证书。我得到的结果不一致,具体取决于我使用 OpenSSL 还是curl 进行连接:
openssl s_client -connect <server>:443 -CAfile /path/to/GeoTrustCA.pem
Run Code Online (Sandbox Code Playgroud)
工作正常,但是
curl --cacert /path/to/GeoTrustCA.pem https://<server>/
Run Code Online (Sandbox Code Playgroud)
失败并出现标准“无法验证证书”错误。
以下是我正在使用的工具的详细信息:
$ curl --version
curl 7.15.5 (i386-redhat-linux-gnu) libcurl/7.15.5
OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 Protocols: tftp ftp telnet dict
ldap http file https ftps Features: GSS-Negotiate IDN IPv6 Largefile
NTLM SSL libz
Run Code Online (Sandbox Code Playgroud)
和
$ openssl version
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
Run Code Online (Sandbox Code Playgroud)
我很困惑。我连接的服务器多年来一直工作没有明显问题:我从未听说过任何人或任何系统无法像这样连接到它。