Curl 无法检索 HTTPS 内容

Curl 无法检索 HTTPS 内容

我在运行 Debian 6 的生产服务器上遇到了问题(apt-get update;apt-get upgrade 成功完成)。

当我调用 HTTPS(StartSSL)服务器时,在 Debian 6 上收到一条错误消息:

#> curl --version
curl 7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
Protocols: dict file ftp ftps http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

#> curl https://mydomain.com/api/
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

但是当我在 Debian 7 上调用相同的地址(服务器也是最新的)时,一切运行良好:

#> curl --version
curl 7.26.0 (x86_64-pc-linux-gnu) libcurl/7.26.0 OpenSSL/1.0.1e zlib/1.2.7 libidn/1.25 libssh2/1.4.2 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: Debug GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

#> curl https://mydomain.com/api/
{'code':'ko', 'message':'ERR_AUTH_BASIC_NEEDED'}

你知道为什么 HTTPS 在 Curl Debian 6 上失败,却可以在 Debian 7 curl 上工作吗?

答案1

过时的不是 curl,而是系统使用的根 CA 证书包。随着 CA 启动、停止运营,或者证书过期、被吊销或续订,有效证书可能会随时间而变化。

在 Debian 中,这些是包裹ca-certificates。对于 squeeze,这似乎几年都没有更新过。只有 wheezy 和 newer 似乎接近最新版本。发行版应该在发行版的支持生命周期内更新这些内容,但 Debian 似乎没有这样做。

你应该能够自行移植使用源码包(不要尝试使用二进制包;它们的依赖项也会更新,并且会导致损坏)。

相关内容