SSLError: сбой рукопожатия предупреждения sslv3

Я делаю следующий вызов на branch.io

import requests
req = requests.get('https://bnc.lt/m/H3XKyKB3Tq', verify=False)

Он отлично работает на моей локальной машине, но не работает на сервере.

SSLError: [Errno 1] _ssl.c:504: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

Версии Openssl:

локальный: OpenSSL 0.9.8zg 14 июля 2015 г.

сервер: OpenSSL 0.9.8e-fips-rhel5 01 июля 2008 г.

Питон:

локальный: 2.7.10 сервер: 2.7.6

Подключение к io-серверу филиала:

Chrome подтвердил, что DigiCert SHA2 Secure Server CA выдал сертификат этого веб-сайта. Сервер не предоставил никакой информации о прозрачности сертификата.

Я попробовал urllib2, но результат был таким же. Любая помощь?


person Kumar Nitin    schedule 15.02.2016    source источник
comment
Вам нужен OpenSSL 0.9.8o по крайней мере для обработки сертификатов sha256, поэтому версия вашего сервера слишком старая.   -  person Barry Pollard    schedule 16.02.2016
comment
Я попробовал OpenSSL 1.0.1e-fips 11 февраля 2013 года. У меня та же ошибка.   -  person Kumar Nitin    schedule 16.02.2016
comment
И использует ли ваш PHP эту версию OpenSSL? Подробнее о том, как проверить, см. здесь: stackoverflow .com/questions/18752409/   -  person Barry Pollard    schedule 16.02.2016
comment
Он использует OpenSSL 1.0.0-fips 29 марта 2010 г.   -  person Kumar Nitin    schedule 17.02.2016
comment
Это также может быть проблемой SNI, так как openssl s_client -connect bnc.lt:443 не работает, а openssl s_client -connect bnc.lt:443 -servername bnc.lt работает хорошо. Я бы сказал, что и сертификат, подписанный SHA2, и SNI могут вызвать проблему, но решение такое же: обновить OpenSSL   -  person Jyo de Lys    schedule 17.02.2016
comment
Вы используете программное обеспечение 6-летней давности, чтобы обеспечить своим пользователям «безопасное» соединение? Может быть, вам вообще не стоит предлагать ssl, чтобы не создавать ложного чувства безопасности. Проверьте openssl.org/news/vulnerabilities.html Так что это даже не вопрос, просто обновить ваше программное обеспечение, и единственной версией, которую следует учитывать, является самая последняя поддерживаемая версия.   -  person Nappy    schedule 22.02.2016
comment
@Nappy У меня тоже была эта проблема с OpenSSL 1.0.0-fips 29 марта 2010 года. Мы уже работаем над обновлением сертификата на всех серверах.   -  person Kumar Nitin    schedule 23.02.2016


Ответы (1)


Jyo de Lys определил проблему. Проблема описана здесь и решение здесь. Я сделал следующее, чтобы заставить это работать:

  1. easy_install pyOpenSSL
  2. easy_install ndg-httpsclient
  3. easy_install пясн1

Если вы получаете эту ошибку при использовании urllib2, вам также необходимо выполнить обновление до python 2.7.9 или более поздней версии.

person Rahul    schedule 18.02.2016
comment
Мне нужно было: pip install pyasn1 также, чтобы удалить некоторую проверку subjectAltName для проверки одноранговых узлов SSL, будут отключены предупреждения, но в противном случае я сэкономил много головной боли. - person Moby Duck; 12.07.2016
comment
Спасибо, мне не хватало ndg-httpsclient ! - person David Underhill; 20.11.2016
comment
На случай, если это не решит проблему. Исправление pyOpenSSL до 0.13 делает - person Félix; 03.08.2017
comment
У меня была та же проблема/ошибка с использованием пакета запроса и Python 2.7.6 (Linux Mint 17.3), я последовал этому ответу, и ошибка исчезла. Спасибо - person Fabiano Tarlao; 19.04.2018
comment
@Félix: Можете ли вы описать, что вы подразумеваете под исправлением pyOpenSSL до 0.13, в том числе, как это сделать? Вы имеете в виду запрет на 0.13.1? - person LarsH; 03.06.2019