Ошибка рукопожатия в python (_ssl.c:590)

Когда я выполняю строку ниже,

req = urllib2.Request(requestwithtoken) 
self.response = urllib2.urlopen(req,self.request).read()

Я получаю следующее исключение:

SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)

Дело в том, что я могу получить токен, пропинговав службу, используя curl. В процессе получения токена были проверены все сертификаты. В свою очередь, используя сгенерированный токен, я не могу подключиться к сервису. Я получаю вышеуказанную ошибку при попытке. Что может быть причиной этого?


person Bharathi Kodeeswaran    schedule 18.11.2015    source источник


Ответы (2)


У меня была такая же проблема. Вероятно, это связано с тем, что ваш удаленный сервер запрашивает шифр, который не поддерживается urllib2. Я думаю, что возможны два решения:

  1. Включите конкретный шифр в urllib. Я думаю, вы также можете включить все поддерживаемые шифры (см. внизу страницы), а лучше проверьте, какой из них вы используете с curl, как показано в ссылке выше.

  2. Установите requests с дополнительными пакетами безопасности, используя: pip install requests[security]. Более подробно это обсуждается в этой проблеме запросов на github.

Я сделал второй вариант, и он работал для меня.

person martin    schedule 26.12.2015

У меня тоже была такая же проблема. Проверьте, какую версию requests вы используете.

import requests
print requests.__version__

Если версия 2.18.4, попробуйте перейти на версию 2.11.1. Я сделал это, и это решило мою проблему. Для этого выполните следующие команды в терминале

pip uninstall requests
pip install requests==2.11.1 

Надеюсь это поможет.

person CPSuperstore    schedule 14.11.2017
comment
Переход на версию 2.11.1 также работал на Mac (была версия 2.14.2). - person SeanFromIT; 20.03.2018