Centos
Fedora 上的 Curl 不接受 Cloudflare https
在乾淨的香草 Fedora 21 上使用 curl 來檢索通過 cloudflare https 服務託管的站點會出現錯誤:
curl https://www.opencpu.org >> curl: (35) Cannot communicate securely with peer: no common encryption algorithm(s).
還:
curl https://www.cloudflare.org >> curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.
此問題僅出現在 Fedora 上,不會出現在執行相同版本 curl 的 Ubuntu 或 Mac 上。我想它必須與nns有關:
curl --version >> curl 7.37.0 (x86_64-redhat-linux-gnu) libcurl/7.37.0 NSS/3.17.3 Basic ECC zlib/1.2.8 libidn/1.28 libssh2/1.4.3 certutil -L >> certutil: function failed: SEC_ERROR_LEGACY_DATABASE: The certificate/key database is in an old, unsupported format.
任何猜測我做錯了什麼?
Fedora 錯誤位於https://bugzilla.redhat.com/show_bug.cgi?id=1185708
原因是 curl 使用 NSS,並且不想與其他使用 NSS 的程序分道揚鑣。
目前在 Fedora 22 中截至 2015 年 7 月尚未修復
這兩個站點的共同點是它們使用 ECC SSL 證書來保護其 https 連接,而不是大多數站點使用的傳統 RSA 證書。這些目前非常罕見,但預計它們將來會越來越受歡迎。
使用的 curl 和 NSS 版本都是用 ECC 建構的,因此應該支持這些證書,所以我認為你在 Fedora 中遇到了一個錯誤,應該報告它。最近在 RHEL 7 中修復了一個相關的錯誤。
作為一種解決方法,您可以使用
wget
而不是curl
,它可以毫無問題地連接到這些站點(儘管後者返回 409 Conflict 錯誤)。