在Fedora上curl不接受Cloudflare https

在干净的香草Fedora 21上使用curl来检索通过cloudflare https服务托pipe的网站会产生错误:

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的bug在https://bugzilla.redhat.com/show_bug.cgi?id=1185708

原因是使用NSScurl,而不想使用程序与其他NSS分离。

目前在Fedora 22中截至2015年7月还没有修复

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

使用curl和NSS的版本都是用ECC构build的,因此应该支持这些证书,所以我认为你已经遇到了Fedora中的一个bug并且应该报告它。 RHEL 7最近修复了一个相关的bug 。

作为一种解决方法,您可以使用wget而不是curl ,这没有任何问题连接到这些站点(虽然后者返回一个409冲突错误)。

请尝试

bash yum update nss