Python-requests " SSL-Fehler - certificate verify failed
Dieser code
import requests
requests.get("https://hcaidcs.phe.org.uk/WebPages/GeneralHomePage.aspx")
ist mir dieser Fehler
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)
Ich weiß praktisch nichts über SSL, aber ich habe versucht, das herunterladen das Zertifikat der Website und zeigt auf die Datei mit der verify
option, aber es hat nicht funktioniert. Bin ich etwas fehlt?
Welche Python version und Betriebssystem verwenden Sie?
Ja sorry, Python 3.6.3 und Windows 7
Die Website hat eine ungültige SSL-Implementierung: ssllabs.com/ssltest/analyze.html?d=hcaidcs.phe.org.uk
Ja sorry, Python 3.6.3 und Windows 7
Die Website hat eine ungültige SSL-Implementierung: ssllabs.com/ssltest/analyze.html?d=hcaidcs.phe.org.uk
InformationsquelleAutor Oliver | 2017-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie schon in einem Kommentar: die Seite hat eine schlechte SSL-Implementierung, wie Sie sehen können aus die SSLLabs-Bericht. Der Haupt-Teil dieses Berichts in Bezug auf Ihr problem ist:
Dies bedeutet, dass der server nicht senden die vollständige Zertifikats-Kette wie erforderlich ist, um das Zertifikat zu überprüfen. Das heißt, Sie müssen fügen Sie die fehlenden Zertifikate selbst bei der Validierung. Für dieses Sie müssen das PEM für die fehlende Kette Zertifikat C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA und auch für die root-CA C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA info eine Datei
my_trust_store.pem
und dann kann man rufen:Funktioniert dies nicht mit normalen Endknoten-Zertifikaten. Seit der SSL-stack von Python basiert auf OpenSSL und OpenSSL erwartet, dass nur Vertrauenswürdige Zertifizierungsstellen im Vertrauensspeicher (d.h. mit
verify
) und ein server-Zertifikat ist kein CA-Zertifikat, es wird nicht helfen, um es in den trust store.InformationsquelleAutor Steffen Ullrich
Sollten Sie schreiben es so, und ich habe überprüft, dass es
Diese einfach deaktiviert, die jede Art von Zertifikat-Validierung. Dies sollte nur für Testzwecke verwendet werden, aber nie in Produktion, da Sie die Anwendung öffnet, man-in-the-middle-Angriffen.
InformationsquelleAutor kerberos