AttributeError:'_socketobject'对象没有属性'set_tlsext_host_name'

时间:2015-07-23 00:31:33

标签: python ubuntu ssl https python-requests

在python中,在Ubuntu服务器上,我试图让requests库发出https请求,如下所示:

import requests
requests.post("https://example.com")

起初,我得到以下内容:

  

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:90:   InsecurePlatformWarning:真正的SSLContext对象不可用。   这可以防止urllib3适当地配置SSL并可能导致   某些SSL连接失败。有关更多信息,请参阅   https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning

按照此问题中的建议:InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately后,我现在已将警告升级为以下错误:

  

AttributeError:'_socketobject'对象没有属性   'set_tlsext_host_name'

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:13)

对我的解决方法如下:

sudo apt-get purge python-openssl
sudo pip install pyopenssl

答案 1 :(得分:3)

这让我能够在我的Ubuntu 12.04.3 LTS上运行python。

sudo apt-get install python-dev python-pip build-essential libffi-dev
sudo -H pip install --upgrade pip setuptools && sudo -H pip install --upgrade pyopenssl

答案 2 :(得分:2)

On RedHat:

sudo yum remove pyOpenSSL
sudo pip install pyopenssl