Suprimir InsecureRequestWarning: la solicitud HTTPS no verificada se está realizando en Python2.6

Estoy escribiendo scripts en Python2.6 con el uso de pyVmomi y mientras uso uno de los métodos de conexión:

service_instance = connect.SmartConnect(host=args.ip, user=args.user, pwd=args.password) 

Me sale la siguiente advertencia:

 /usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html InsecureRequestWarning) 

Lo interesante es que no tengo urllib3 instalado con pip (pero está en /usr/lib/python2.6/site-packages/requests/packages/urllib3/ ).

He intentado como se sugiere aquí

 import urllib3 ... urllib3.disable_warnings() 

Pero eso no cambió nada.

Puede deshabilitar cualquier advertencia de Python a través de la variable de entorno PYTHONWARNINGS . En este caso, usted quiere:

 export PYTHONWARNINGS="ignore:Unverified HTTPS request" 

Para deshabilitar el uso del código Python ( requests >= 2.16.0 ):

 import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 

Para requests < 2.16.0 , vea la respuesta original a continuación.

Respuesta original

La razón por la que urllib3.disable_warnings() no funcionó para usted es porque parece que está usando una instancia separada de urllib3 vended dentro de las solicitudes.

Recojo esto en base a la ruta aquí: /usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py

Para deshabilitar las advertencias en urllib3 suministrado por las solicitudes, deberá importar esa instancia específica del módulo:

 import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) 

Esta es la respuesta en 2017. urllib3 no forma parte de las requests

 import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 

La forma correcta es leer la sección correspondiente en el enlace proporcionado y hacer lo que dice. La forma específica para las requests (que se agrupa con su propia copia de urllib3 ), según los Certificados de CA – Uso avanzado – Solicita la documentación 2.8.1 :

  • requests envían con su propio paquete de certificados (pero solo se puede actualizar junto con el módulo)
  • usará (ya que requests v2.4.0 ) el paquete v2.4.0 en su lugar si está instalado

La medida de seguridad de verificación de certificado HTTPS no es algo que deba descartarse con entusiasmo. El ataque Man-in-the-middle que lo protege lo protege de un tercero, por ejemplo, al tomar un virus, manipular o robar sus datos.

Lo que, con las operaciones de piratería global respaldadas por el gobierno de hoy en día, como las Operaciones de Acceso Personalizadas y el Gran Cortafuegos de China que se dirigen a la infraestructura de red, es más probable de lo que cree.

Por este comentario de github , uno puede deshabilitar las advertencias de solicitud urllib3 través de requests en 1-liner:

requests.packages.urllib3.disable_warnings()

Sin embargo, esto suprimirá todas las advertencias, no solo InsecureRequest (es decir, también suprimirá InsecurePlatform etc.). En los casos en los que solo queremos que las cosas funcionen, encuentro la concisión a mano.

Para impaciente, una forma rápida de deshabilitar la advertencia HTTPS no verificada de Python:

 export PYTHONWARNINGS="ignore:Unverified HTTPS request" 

Tuve un problema similar con PyVmomi Client. Con la versión 2.7.9 de Python, he resuelto este problema con la siguiente línea de código:

 default_sslContext = ssl._create_unverified_context() self.client = \ Client(, username=, password=, sslContext=default_sslContext ) 

Tenga en cuenta que, para que esto funcione, necesita Python 2.7.9 al menos.

¿Por qué no usar la función original de pyvmomi SmartConnectNoSSL ? Agregaron esta función el June 14, 2016 y la llamaron ConnectNoSSL , un día después de cambiar el nombre a SmartConnectNoSSL , ¿usarlo en lugar de pasar la advertencia con líneas de código innecesarias en su proyecto?

Proporciona un método estándar para conectarse a un servidor específico sin verificación SSL. Útil cuando se conecta a servidores con certificados autofirmados o cuando desea ignorar SSL por completo

 service_instance = connect.SmartConnectNoSSL(host=args.ip, user=args.user, pwd=args.password) 

Para Python 2.7

Agregue la variable de entorno PYTHONWARNINGS como clave y el valor correspondiente que se ignorará como:

os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"

Resuelto el problema en mi MacBook:

 pip install certifi 

o

 pip3 install certifi