J'écris des scripts en Python2.6 avec pyVmomi et en utilisant l'une des méthodes de connexion suivantes:
service_instance = connect.SmartConnect(Host=args.ip,
user=args.user,
pwd=args.password)
Je reçois l'avertissement suivant:
/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)
Ce qui est intéressant, c’est que je n’ai pas installé urllib3 avec pip (mais c’est là dans /usr/lib/python2.6/site-packages/request/packages/urllib3/).
J'ai essayé comme suggéré ici
import urllib3
...
urllib3.disable_warnings()
mais cela n'a rien changé.
Vous pouvez désactiver tous les avertissements Python via la variable d'environnement PYTHONWARNINGS
. Dans ce cas, vous voulez:
export PYTHONWARNINGS="ignore:Unverified HTTPS request"
Pour désactiver l’utilisation de Python code (requests >= 2.16.0
):
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
Pour requests < 2.16.0
, voir la réponse originale ci-dessous.
Réponse originale
La raison pour laquelle urllib3.disable_warnings()
n'a pas fonctionné pour vous est qu'il semble que vous utilisiez une instance distincte d'urllib3 vendored à l'intérieur des demandes.
Je rassemble ceci basé sur le chemin ici: /usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py
Pour désactiver les avertissements dans l'urllib3 vendored des demandes, vous devez importer cette instance spécifique du module:
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
C'est la réponse pour 2017. urllib3
ne fait plus partie de requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
La bonne façon est de lire la section pertinente sur le lien fourni et faites comme il est dit. La manière spécifique pour requests
(qui contient sa propre copie de urllib3
), conformément à Certificats CA - Utilisation avancée - Documentation Requests 2.8.1 :
requests
est livré avec son propre ensemble de certificats (mais il ne peut être mis à jour qu'avec le module)requests
v2.4.0
) le package certifi
s'il est installéLa mesure de sécurité relative à la vérification des certificats HTTPS ne doit pas être écartée avec légèreté. L’attaque Man-in-the-middle qu’elle évite vous protège de tiers, par exemple. en sirotant un virus dans ou en altérant ou en volant vos données.
Ce qui, avec les opérations de piratage mondiales soutenues par le gouvernement telles que Opérations d'accès personnalisées et le grand pare-feu de Chine cette infrastructure de réseau cible, est plus probable que vous ne le pensez.
Par ce github commentaire, on peut désactiver urllib3
demander des avertissements via requests
dans une ligne:
requests.packages.urllib3.disable_warnings()
Cela supprimera tous les avertissements , pas seulement InsecureRequest
(c’est-à-dire qu’il supprimera également InsecurePlatform
etc). Dans les cas où nous voulons simplement que les choses fonctionnent, je trouve la concision pratique.
Pour les impatients, un moyen rapide de désactiver l'avertissement HTTPS non vérifié de python:
export PYTHONWARNINGS="ignore:Unverified HTTPS request"
Pourquoi ne pas utiliser pyvmomi fonction originaleSmartConnectNoSSL
. Ils ont ajouté cette fonction sur June 14, 2016
et l'ont nommée ConnectNoSSL
, n jour après ils ont changé le nom en SmartConnectNoSSL
, utilisez-le plutôt de en passant l'avertissement avec des lignes de code inutiles dans votre projet?
Fournit une méthode standard pour se connecter à un serveur spécifié sans vérification SSL. Utile lors de la connexion à des serveurs avec des certificats auto-signés ou lorsque vous souhaitez ignorer complètement SSL
service_instance = connect.SmartConnectNoSSL(Host=args.ip,
user=args.user,
pwd=args.password)
J'ai eu un problème similaire avec PyVmomi Client. Avec Python Version 2.7.9, j'ai résolu ce problème avec la ligne de code suivante:
default_sslContext = ssl._create_unverified_context()
self.client = \
Client(<vcenterip>, username=<username>, password=<passwd>,
sslContext=default_sslContext )
Notez que, pour que cela fonctionne, vous avez besoin de Python 2.7.9 au moins.
La réponse acceptée ne fonctionne pas si certains vendeurs de paquets possèdent leur propre copie de urllib3, auquel cas cela fonctionnera toujours:
import warnings
warnings.filterwarnings('ignore', message='Unverified HTTPS request')
Pour Python 2.7
Ajoutez la variable d’environnement PYTHONWARNINGS comme clé et la valeur correspondante à ignorer, par exemple:
os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"