Ich schreibe Skripte in Python2.6 unter Verwendung von pyVmomi und unter Verwendung einer der Verbindungsmethoden:
service_instance = connect.SmartConnect(host=args.ip,
user=args.user,
pwd=args.password)
Ich erhalte 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)
Interessant ist, dass ich urllib3 nicht mit pip installiert habe (aber es befindet sich dort in /usr/lib/python2.6/site-packages/requests/packages/urllib3/ ).
Ich habe es wie hier vorgeschlagen versucht
import urllib3
...
urllib3.disable_warnings()
aber das hat nichts geändert.
Antworten:
Sie können alle Python-Warnungen über die
PYTHONWARNINGS
Umgebungsvariable deaktivieren . In diesem Fall möchten Sie:So deaktivieren Sie mit Python-Code (
requests >= 2.16.0
):Für
requests < 2.16.0
sehen, ursprüngliche Antwort unten.Ursprüngliche Antwort
Der Grund, warum dies
urllib3.disable_warnings()
bei Ihnen nicht funktioniert hat, ist, dass Sie anscheinend eine separate Instanz von urllib3 verwenden, die innerhalb von Anforderungen verkauft wird.Ich sammle dies basierend auf dem Pfad hier:
/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py
Um Warnungen in Vendored Urllib3 von Anforderungen zu deaktivieren, müssen Sie diese bestimmte Instanz des Moduls importieren:
quelle
PYTHONWARNINGS="ignore:Unverified HTTPS request"
from requests.packages.urllib3.exceptions import InsecureRequestWarning
import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
.Dies ist die Antwort im Jahr 2017.
urllib3
nichtrequests
mehr Teil vonquelle
requests >= 2.16.0
requests
Version ist2.21.0
und es haturllib3
. Ich habe versucht2.16.0
, "2.16.1, and
2.17.0" und sie alle hattenurllib3
. Ich habe es versucht2.4.0
und dieser hatte es aber nicht. Haben sie es wieder hinzugefügt?Per dieser Github Kommentar kann man deaktivieren
urllib3
Anfrage Warnungen überrequests
in einem 1-Liner:requests.packages.urllib3.disable_warnings()
Dies unterdrückt jedoch alle Warnungen, nicht nur
InsecureRequest
(dh es werden auchInsecurePlatform
usw. unterdrückt ). In Fällen, in denen wir nur wollen, dass Dinge funktionieren, finde ich die Prägnanz praktisch.quelle
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)
scheint zu funktionieren.Der richtige Weg ist, den entsprechenden Abschnitt auf dem bereitgestellten Link zu lesen und zu tun, was er sagt. Die Art und Weise, für
requests
dieurllib3
gemäß CA-Zertifikaten - Erweiterte Verwendung - Anforderungen 2.8.1 Dokumentation spezifisch ist (die mit einer eigenen Kopie gebündelt wird ) :requests
Wird mit einem eigenen Zertifikatspaket geliefert (kann jedoch nur zusammen mit dem Modul aktualisiert werden).requests
v2.4.0
) demcertifi
Paket verwendet, wenn es installiert istDie Sicherheitsmaßnahme zur Überprüfung des HTTPS-Zertifikats sollte nicht unbeschwert verworfen werden. Der Man-in-the-Middle-Angriff, der verhindert, schützt Sie vor Dritten, z. B. indem Sie einen Virus einstecken oder Ihre Daten manipulieren oder stehlen .
Was angesichts der heutigen von der Regierung unterstützten globalen Hacking-Operationen wie Tailored Access Operations und der Great Firewall of China , die auf die Netzwerkinfrastruktur abzielen, wahrscheinlicher ist als Sie denken.
quelle
verify=False
.Für ungeduldige, schnelle Möglichkeit, die nicht überprüfte HTTPS-Warnung von Python zu deaktivieren:
quelle
$env:PYTHONWARNINGS="ignore:Unverified HTTPS request"
Die akzeptierte Antwort funktioniert nicht, wenn einige Paketanbieter eine eigene Kopie von urllib3 haben. In diesem Fall funktioniert dies weiterhin:
quelle
Ich hatte ein ähnliches Problem mit PyVmomi Client. Mit Python Version 2.7.9 habe ich dieses Problem mit der folgenden Codezeile gelöst:
Beachten Sie, dass Sie mindestens Python 2.7.9 benötigen, damit dies funktioniert.
quelle
Warum nicht mit pyvmomi ursprüngliche Funktion
SmartConnectNoSSL
. Sie fügten diese Funktion hinzuJune 14, 2016
und nannten sieConnectNoSSL
: einen Tag , nachdem sie den Namen zu ändernSmartConnectNoSSL
, verwenden , die statt durch die Warnung mit unnötigen Zeilen Code in Ihrem Projekt vorbei?quelle
Für Python 2.7
Fügen Sie die Umgebungsvariable PYTHONWARNINGS als Schlüssel und den entsprechenden zu ignorierenden Wert wie folgt hinzu:
os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"
quelle