AttributeError: el objeto ‘_socketobject’ no tiene el atributo ‘set_tlsext_host_name’

En Python, en un servidor de Ubuntu, estoy tratando de obtener la biblioteca de requests para realizar solicitudes https, como por ejemplo:

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

Al principio, obtuve lo siguiente:

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: un verdadero objeto SSLContext no está disponible. Esto evita que urllib3 configure SSL adecuadamente y puede causar que ciertas conexiones SSL fallen. Para obtener más información, consulte https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformlatningning .

Después de seguir los consejos de esta pregunta: InsecurePlatformWarning: un verdadero objeto SSLContext no está disponible. Esto evita que urllib3 configure SSL adecuadamente , ahora he actualizado mi advertencia al siguiente error:

AttributeError: el objeto ‘_socketobject’ no tiene el atributo ‘set_tlsext_host_name’

¿Cómo puedo solucionar esto?

La solución para mí fue la siguiente:

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

Esto fue capaz de hacer que Python trabajara en Ubuntu 12.04.3 LTS para mí.

 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 

En RedHat:

 sudo yum remove pyOpenSSL sudo pip install pyopenssl