582 Stimmen

Unterdrücken von InsecureRequestWarning: Nicht überprüfte HTTPS-Anfrage wird in Python2.6 durchgeführt

Ich schreibe Skripte in Python2.6 mit Verwendung von pyVmomi und während der Verwendung einer der Verbindungsmethoden:

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

Ich erhalte die folgende Warnung:

/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)

Interessanterweise habe ich urllib3 nicht mit pip installiert (aber es befindet sich in /usr/lib/python2.6/site-packages/requests/packages/urllib3/).

Ich habe versucht, wie hier vorgeschlagen

import urllib3
...
urllib3.disable_warnings()

aber das hat nichts geändert.

1212voto

shazow Punkte 16007

Sie können alle Python-Warnungen über die Umgebungsvariable PYTHONWARNINGS deaktivieren. In diesem Fall benötigen Sie:

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

Um die Verwendung von Python-Code zu deaktivieren (requests >= 2.16.0):

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

Für requests < 2.16.0 siehe die ursprüngliche Antwort unten.

Ursprüngliche Antwort

Der Grund, warum urllib3.disable_warnings() für Sie nicht funktioniert hat, liegt darin, dass Sie anscheinend eine separate Instanz von urllib3 verwenden, die innerhalb von requests vorgelagert ist.

Ich schließe das aus dem Pfad hier: /usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py

Um Warnungen in dem von requests vorgelagerten urllib3 zu deaktivieren, müssen Sie diese spezifische Instanz des Moduls importieren:

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

187voto

Nayana Adassuriya Punkte 21724

Dies ist die Antwort im Jahr 2017. urllib3 ist nicht mehr Teil von requests

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

68voto

hamx0r Punkte 3491

Laut diesem Github Kommentar kann man Warnungen für urllib3-Anfragen über requests mit einer Zeile deaktivieren:

requests.packages.urllib3.disable_warnings()

Dies unterdrückt alle Warnungen, nicht nur InsecureRequest (es unterdrückt auch InsecurePlatform usw.). In Fällen, in denen wir einfach wollen, dass etwas funktioniert, finde ich die Kürze hilfreich.

54voto

ivan_pozdeev Punkte 30938

Die HTTPS-Zertifikatsüberprüfung ist keine Sicherheitsmaßnahme, die leichtfertig verworfen werden sollte. Der Man-in-the-middle-Angriff, den sie verhindert, schützt Sie vor einer dritten Partei, die z.B. ein Virus einschleust oder Ihre Daten manipuliert oder stiehlt.
Auch wenn Sie dies nur in einer Testumgebung vorhaben, können Sie leicht vergessen, es rückgängig zu machen, wenn Sie sich anderswohin bewegen.

Lesen Sie stattdessen den entsprechenden Abschnitt unter dem bereitgestellten Link und befolgen Sie es. Der spezifische Weg für requests (das mit seinem eigenen Kopie von urllib3 gebündelt ist), gemäß CA-Zertifikate — Erweiterte Nutzung — Requests 2.8.1-Dokumentation:

  • requests wird mit seinem eigenen Zertifikatspaket geliefert (kann aber nur zusammen mit dem Modul aktualisiert werden)
  • es wird (seit requests v2.4.0) das certifi-Paket verwenden, falls es installiert ist
  • In einer Testumgebung können Sie leicht ein Testzertifikat in certifi einschleusen, gemäß wie aktualisiere ich Stammzertifikate von certifi?. z.B. wenn Sie sein Paket nur durch Ihr Testzertifikat ersetzen, werden Sie es sofort sehen, wenn Sie vergessen sollten, dies rückgängig zu machen, wenn Sie in die Produktion wechseln.

Zu guter Letzt, mit heutigen staatlich unterstützten globalen Hacking-Operationen wie Tailored Access Operations und der Großen Firewall von China, die die Netzwerkinfrastruktur ins Visier nehmen, ist es wahrscheinlicher, Opfer eines MITM-Angriffs zu werden, als Sie denken.

45voto

Yigal Punkte 1315

Die akzeptierte Antwort funktioniert nicht, wenn einige Paketanbieter ihre eigene Kopie von urllib3 bereitstellen, in diesem Fall funktioniert es immer noch:

import warnings

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X