从今天(或最近几天)开始,我尝试连接到github.com时遇到了SSL错误(例如克隆存储库)。
这是运行Red Hat 4.1.2-33的传统服务器。
下面是我尝试连接时的样子:
$ curl https://www.github.com --verbose * About to connect() to www.github.com port 443 (#0) * Trying 192.30.252.130... connected * Connected to www.github.com (192.30.252.130) port 443 (#0) * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * NSS error -12286 * Closing connection #0 * SSL connect error curl: (35) SSL connect error
我可以从这个页面看到NSS错误代码是:
“无法与对等安全地进行通信:没有通用的encryptionalgorithm”。
本地和远程系统不共享密码套件。 这可能是由于任何一端configuration错误所致。 这可能是由于服务器被错误configuration为使用非RSA证书和RSA密钥交换algorithm。
如果我把这完全正确的,似乎github.com有一个最近更新的SSL证书,我的服务器没有密码套件兼容。 这是一个传统的服务器,所以我并不感到惊讶。
我试过yum update nss (因为curl似乎正在使用)以及yum update openssl但没有更新这些包。
我也尝试过这里的程序大纲,但无济于事。
对于TLS握手的工作方式,甚至可以深入解决这个问题,我的确有点触目惊心。 有没有人有什么好的想法,如何开始深入挖掘,找出哪里出了问题,我需要更新的东西? 升级操作系统暂时不是一种select。
更新
进一步挖掘,这似乎是libcurl和通过git连接到github.com时使用的密码的问题。 如果我明确指定了兼容的密码,我可以让curl工作:
$ curl https://github.com --cipher rsa_aes_128_sha
我甚至可以将--cipher rsa_aes_128_sha参数添加到.curlrc文件,并默认使用curl来使用该密码。 不幸的是,这似乎并没有得到git命令拾取,所以它让我无处… …我也不能find一种替代的方式来指定密码。 这是一个详细的git pull在github.com仓库中的结果:
$ GIT_CURL_VERBOSE=1 git pull * Couldn't find host github.com in the .netrc file, using defaults * About to connect() to github.com port 443 (#0) * Trying 192.30.252.129... * Connected to github.com (192.30.252.129) port 443 (#0) * CAfile: /root/certs/cacert.pem CApath: none * NSS error -12286 * Expire cleared * Closing connection #0 * Couldn't find host github.com in the .netrc file, using defaults * About to connect() to github.com port 443 (#0) * Trying 192.30.252.129... * Connected to github.com (192.30.252.129) port 443 (#0) * CAfile: /root/certs/cacert.pem CApath: none * NSS error -12286 * Expire cleared * Closing connection #0 error: SSL connect error while accessing https://github.com/twbs/bootstrap.git/info/refs fatal: HTTP request failed
这可能是一个死胡同……看起来这个人在StackOverflow遇到了完全相同的问题 。
今天的SSL / TLSconfiguration是由过去几年来出现的诸如BEAST和CRIME攻击等安全问题以及RC4的弱点所驱动的,在某些情况下会导致一些老客户无法使用因为它们不支持更多的现代协议,密码套件等。即使是RHEL 5客户端也偶尔会遇到与通过SSL / TLS与RHEL 6服务器进行通信的麻烦 。 通过一些工作,您可以手动指定一个密码套件来使用,但是对于像RHEL4这样老的程序是不太可能的。 这种状况使得升级你唯一的select。
…在你要花时间打墙和所有)检查你的date/时间:
[alexus@wcmisdlin02 ~]$ sudo ntpdate time.apple.com 2 Jan 16:33:44 ntpdate[6883]: adjust time server 17.171.4.35 offset 0.000416 sec [alexus@wcmisdlin02 ~]$
这可能不是你的问题,但我有时间不对的问题,SSL没有为我工作。
我想这可能是你要找的东西:
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/PKCS11/Module_Specs
它有解释我认为你需要使它默认工作(没有指定命令行)的设置。
我的centos 6.8系统上的文件名是/etc/pki/nssdb/pkcs11.txt