Начиная с сегодняшнего дня (или в течение последних нескольких дней) я столкнулся с ошибкой SSL при попытке подключиться к github.com (например, для клонирования репозитория).
Это устаревший сервер с 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:
«Невозможно безопасно связаться с одноранговым узлом: нет общих алгоритмов шифрования».
Локальные и удаленные системы не имеют общих наборов шифров. Это может быть связано с неправильной конфигурацией на любом конце. Это может быть связано с неправильной конфигурацией сервера для использования сертификата, отличного от RSA, с алгоритмом обмена ключами RSA.
Если я все правильно изложу, похоже, что на github.com есть недавно обновленный сертификат SSL, а на моем сервере нет совместимого с ним набора шифров. Это устаревший сервер, поэтому я не удивлен.
я пробовал yum update nss
(поскольку это, похоже, использует завиток), а также yum update openssl
но ни один из этих пакетов не обновился.
Я также пробовал следовать схеме процедуры Вот но безрезультатно.
Я как бы наткнулся на стену со своими знаниями о том, как работают рукопожатия TLS, чтобы даже устранить эту проблему гораздо глубже. Есть ли у кого-нибудь хорошие идеи о том, как начать копать глубже и выяснить, что идет не так и где мне нужно что-то обновить? Обновление ОС пока что не вариант.
Обновить
Если копать дальше, это похоже на проблему с libcurl и шифром, который он использует при подключении к github.com через git. я жестяная банка заставить curl работать, если я явно укажу совместимый шифр:
$ curl https://github.com --cipher rsa_aes_128_sha
И я даже могу добавить --cipher rsa_aes_128_sha
в файл .curlrc, и curl использует этот шифр по умолчанию. К сожалению, команда git, похоже, не подхватила это, так что это ни к чему не привело ... и я не смог найти альтернативный способ указать шифр. Вот что получается в результате многословного 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 / TLS обусловлена соображениями безопасности, которые возникли за последние пару лет, такими как атаки BEAST и CRIME, а также слабость RC4, что в некоторых случаях приведет к тому, что некоторые старые клиенты не смогут чтобы общаться, поскольку они не поддерживают более современные протоколы, наборы шифров и т. д. Даже клиенты RHEL 5 иногда бывают проблемы связь с серверами RHEL 6 через SSL / TLS. Приложив некоторую работу, вы можете вручную указать набор шифров для использования, но это маловероятно с чем-то таким же старым, как RHEL4. Такое положение вещей делает обновление вашего только реальный вариант.
... прежде, чем вы собираетесь биться о стену и все такое) проверьте дату / время:
[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