【发布时间】:2018-10-20 17:59:46
【问题描述】:
我有一堆使用 curl 与各种服务通信的 PHP 脚本。目前,其中一项服务的 SSL 证书已更新,当我尝试从服务器的 CLI 获取它时,我的 curl 开始为它哭泣:
~$ curl https://example.com
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.
目前,我将 verify => false 硬编码到我的所有请求中,以保持我的脚本正常运行,但这不是我想要的。
我得到了最新的cacert file from mozilla,把它放在/etc/ssl/certs/ca-certificates.crt,然后运行sudo update-ca-certificates,它运行成功了(我想..)
~$ sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
但话又说回来,curl 对此不太满意,如果不通过 -k 标志,仍然无法获取我的资源。
【问题讨论】:
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地点。