Fedora 上的 Curl 不接受 Cloudflare https

Fedora 上的 Curl 不接受 Cloudflare https

在干净的 vanilla 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.

猜猜我做错了什么?

答案1

Fedora 错误位于https://bugzilla.redhat.com/show_bug.cgi?id=1185708

原因是 curl 使用 NSS,并且不想与其他使用 NSS 的程序有所不同。

截至 2015 年 7 月,Fedora 22 中尚未修复

答案2

这两个网站的共同点是它们都使用 ECC SSL 证书来保护其 https 连接,而不是大多数网站使用的传统 RSA 证书。目前,这些证书非常少见,但预计未来会越来越受欢迎。

使用的 curl 和 NSS 的两个版本都是使用 ECC 构建的,因此应该支持这些证书,所以我认为你在 Fedora 中遇到了一个错误,应该报告它。相关错误已在 RHEL 7 中修复。

作为一种解决方法,您可以使用wget而不是curl,这样可以毫无问题地连接到这些站点(尽管后者返回 409 冲突错误)。

答案3

请尝试

bash yum update nss

相关内容