我不是 SSL 方面的专家,如果我错误地使用了一些与 SSL 相关的术语,请见谅。出于某种原因,我无法通过 https 下载文件,而 curl 使用 --cacert 选项为它提供了该站点的证书。
我有一个可通过 https 访问的 Intranet 站点。接受不受信任(或自签名)的 SSL 证书后,可以在 Firefox 中打开此站点。我将此站点的证书从 Firefox 导出到一个文件中。我已经从 /etc/pki/tls/certs 中删除了所有证书,因此除了 --cacert 选项提供的文件中的证书之外,curl 无法在任何地方找到证书。
当我使用指定证书文件的 --cacert 选项运行 curl 时,它会失败:
curl -v https://some-intranet-site.com/repodata/repomd.xml --cacert exported_certificate.cer
* 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
当我导出 Google 的证书并尝试使用 curl访问https://gogole.com时,它可以工作:
curl https://google.com --cacert ~/dev/tmp/google.cert
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>
你能给出任何解释吗?
谢谢你。