python python-2.6 suppress-warnings urllib3 pyvmomi

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



python-2.6 suppress-warnings (10)

¿Por qué no utilizar la función original de pyvmomi SmartConnectNoSSL ? added esta función el June 14, 2016 y la llamaron ConnectNoSSL , un día después de que cambiaron el nombre a SmartConnectNoSSL , ¿la usaron 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)

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á allí en /usr/lib/python2.6/site-packages/requests/packages/urllib3/ ).

He intentado como se sugiere here

import urllib3 ... urllib3.disable_warnings()

Pero eso no cambió nada.


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 urllib3 con su propia copia de urllib3 ), según los certificados de CA - Uso avanzado - Documentación de solicitudes 2.8.1 :

  • requests envían con su propio paquete de certificados (pero solo se puede actualizar junto con el módulo)
  • utilizará (desde las requests v2.4.0 ) el paquete v2.4.0 si está instalado

La medida de seguridad de verificación del certificado HTTPS no es algo que deba descartarse alegremente. El ataque Man-in-the-middle que evita protegerte de un tercero, por ejemplo, tomar un virus o manipular o robar tus datos.

Lo cual, con las operaciones de pirateo global respaldadas por el gobierno de hoy en día, como Tailored Access Operations y el Gran Firewall de China que apuntan a la infraestructura de red, es más probable de lo que piensas.


La respuesta aceptada no funciona si algunos proveedores de paquetes son su propia copia de urllib3, en cuyo caso esto seguirá funcionando:

import warnings warnings.filterwarnings(''ignore'', message=''Unverified HTTPS request'')


Para Python 2.7

Agregue la variable de entorno PYTHONWARNINGS como clave y el valor correspondiente a ignorar como:

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


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

export PYTHONWARNINGS="ignore:Unverified HTTPS request"


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

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 , consulte la respuesta original a continuación.

Respuesta original

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

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

Para deshabilitar las advertencias en urllib3 vendida de 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)


Resolvió el problema en mi MacBook:

pip install certifi

o

pip3 install certifi


Según este comentario de github , uno puede deshabilitar las advertencias de solicitud urllib3 través de requests en un 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 que solo queremos que las cosas funcionen, la concisión es útil.


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

default_sslContext = ssl._create_unverified_context() self.client = / Client(<vcenterip>, username=<username>, password=<passwd>, sslContext=default_sslContext )

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