Centos

Fedora 上的 Curl 不接受 Cloudflare https

  • August 30, 2016

在乾淨的香草 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 錯誤)。

引用自:https://serverfault.com/questions/662182