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 paquetev2.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.