PyCURL: ошибка рукопожатия TLS - PullRequest
       21

PyCURL: ошибка рукопожатия TLS

1 голос
/ 22 декабря 2009

Я использую PyCURL для тестирования предлагаемой нами услуги перенаправления - пользователь нажимает http://xyz.com/asdf/ и перенаправляется на https://a.com, https://b.com и https://c.com.

Я пытаюсь использовать PyCURL, чтобы запросить http://xyz.com, и распечатать (но не HTTP-запрос) строку "https://{a|b|c}.com",, но всякий раз, когда целевым URL является HTTPS, а не HTTP, метод PyCURL.request () выдает следующее исключение:

(35, 'gnutls_handshake() failed: A TLS fatal alert has been received.')

Поиск в Google для «ошибки pycurl tls» не дает большого количества результатов, кроме одного, который намекает на то, что PyCURL для Ubuntu использует GnuTLS вместо OpenSSL. Это то, что вызывает мою проблему? Если да, то как мне настроить PyCURL для использования OpenSSL?

Моя ОС - Ubuntu 9.10, Python 2.6, и вот моя информация о версии PyCURL

>>> pycurl.version_info()

(3, '7.19.5', 463621, 'x86_64-pc-linux-gnu', 1597, 'GnuTLS/2.8.3', 0, '1.2.3.3', ('tftp', 'ftp', 'telnet', 'dict', 'ldap', 'ldaps', 'http', 'file', 'https', 'ftps'), None, 0, '1.15')

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 30 ноября 2014

Я только что решил ту же проблему. Я не уверен на 100%, что случилось. Но я установил pycurl через apt-get install python-pycurl, который, по-моему, по умолчанию использует gnutls, но мне показалось, что в моей системе должен быть openssl.

Я решил это, выполнив следующее:

export PYCURL_SSL_LIBRARY=[openssl|gnutls|nss] (выберите один из 3, openssl, gnutls или nss, без скобок)

pip install pycurl --upgrade

Если ваша версия pycurl уже имеет новейшую версию, удалите ее, выполнив следующую команду pip uninstall pycurl и выполните указанные выше команды.

источник: http://pycurl.sourceforge.net/doc/install.html

1 голос
/ 23 декабря 2009

pycurl использует libcurl, и libcurl может быть построен для использования одной из нескольких библиотек TLS. GnuTLS и OpenSSL являются двумя из них. Таким образом, вы можете перестроить libcurl, чтобы использовать тот, который вы предпочитаете.

...