Я пытаюсь подключиться к сайту API из системы Ubuntu 14.0.4, используя API на основе Python. Этот API-интерфейс устанавливает соединение https с сервером API (используя только стандартные вызовы python requests
) с параметрами, которые приводят к вызову вызываемого метода API. Код API Python не заботится о TLS, SSH и т. Д., Но полагается на то, что доступно ОС.
Когда я подключаюсь, следуя документации API, я получаю сообщение об ошибке, говоря
[Errno 1] _ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure.
Очевидно, openssl пытается использовать sslv3, который НЕ является поддерживаемый сервером, который я пытаюсь учесть.
Где-то в качестве диагностического предложения я увидел следующее:
$ openssl s_client -connect bryce.cp.bsd.net:443 -tls1
При этом возникает тот же сбой рукопожатия, но с дополнительным сообщением, которое
Secure Renegotiation IS NOT supported
, который иллюстрирует природу проблемы.Первый метод, который он пробует, получает ошибку рукопожатия, затем последующие попытки не предпринимаются.
Я думаю, что мне нужна более новая версия OpenSSL или какой-то способ настроить существующий, который является стандартным OpenSSL v1.0.1f, который очень старый.
Кажется, что Ubuntu не предоставляет обновления для это пакет на 14.0.4. Поэтому я должен был бы построить и установить это сам.
Я ищу совет, как лучше всего это сделать.
ОБНОВЛЕНИЕ: Я вижу, что достаточно легко запустить файл make, который поставляется с openssl. И я вижу, что он устанавливает openssl в другие каталоги, чем официальный пакет. Так что простая установка не испортит то, что я имею Но как мне сказать Ubuntu использовать эту новую версию, а не ту, с которой она поставляется?