我正在使用PyCURL测试我们提供的重定向服务-用户点击http://xyz.com/asdf/并被重定向到https://a.comhttps://b.comhttps://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.')

谷歌搜索“ pycurl tls错误”并不会产生很多结果,只是提示“ Ubuntu的PyCURL使用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')

提前致谢!

最佳答案

我刚刚解决了同样的问题。我不确定100%出了什么问题。
但是我通过apt-get install python-pycurl安装了pycurl,我认为默认情况下使用gnutls,但是在我看来,它应该是我系统上的openssl。

我通过执行以下操作解决了该问题:

export PYCURL_SSL_LIBRARY=[openssl|gnutls|nss](选择3个,openssl,nutl或nss中的一种,不带括号)

pip install pycurl --upgrade

如果您的pycurl版本已经是最新版本,请通过执行以下命令pip uninstall pycurl将其删除,然后运行上述命令。

来源:http://pycurl.sourceforge.net/doc/install.html

关于python - PyCURL:TLS握手错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1942719/

10-14 17:55