Wie habe ich Python httplib akzeptieren nicht vertrauenswürdige Zertifikate? Ich habe ein Snake Oil / selbstsigniertes Zertifikat auf meinem Webserver erstellt, und mein Python-Client kann keine Verbindung herstellen, da ich ein nicht vertrauenswürdiges Zertifikat verwende.
Ich würde das Problem lieber in meinem Client-Code beheben, anstatt es auf meinem System zu vertrauen.
%Vor%Nach Ссылка
Warnung: Dies überprüft das Zertifikat des Servers nicht.
Sie können also die Zertifikatsverifizierung nicht deaktivieren, da diese Funktion nicht enthalten ist; -)
Beachten Sie auch, dass die Argumente auf derselben Seite falsch sind:
Ссылка
Also benutze httplib.HTTPSConnection('127.0.0.1', 443)
Einige meiner Skripts haben nach der Aktualisierung meines Computers nicht mehr funktioniert. Stellt sich heraus, das war das Problem: Ссылка
Geändert in Version 2.7.9: Kontext wurde hinzugefügt.
Diese Klasse führt jetzt standardmäßig alle erforderlichen Prüfungen des Zertifikats und Hostnamens durch. Um zum vorherigen, nicht verifizierten Verhalten zurückzukehren, kann ssl._create_unverified_context () an den Kontextparameter übergeben werden.
Wenn also Ihre Version von Python & gt; = 2.7.9 ist (2.7.10 in meinem Fall), werden Sie wahrscheinlich darauf stoßen. Um es zu beheben, habe ich meinen Anruf aktualisiert:
%Vor%Dies ist wahrscheinlich die einfachste Änderung, um das gleiche Verhalten beizubehalten.
Beim Überprüfen des Python 2.7.14-Quellcodes können Sie eine Umgebungsvariable festlegen
%Vor%Dies führt dazu, dass die Zertifikatsüberprüfung standardmäßig deaktiviert wird (dies gilt für alle Anfragen von Ihrem Programm).
Ich glaube, das funktioniert ab 2.7.12+ - aber nicht für 3.x.
Ref. PEP 493: Überprüfen Sie HTTPS standardmäßig, aber erlauben Sie es, dass envvar dies überschreibt
https://www.python.org/dev/peps/pep-0493/#feature-environment-based-configuration