Was bedeutet “SSLError: [SSL] PEM-lib (_ssl.c:2532)" bedeuten, mit der Python-ssl-Bibliothek?
Ich bin versucht, eine Verbindung zu einer anderen Partei mit Python 3 asyncio-Modul und bekomme diese Fehlermeldung:
36 sslcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
---> 37 sslcontext.load_cert_chain(cert, keyfile=ca_cert)
38
SSLError: [SSL] PEM lib (_ssl.c:2532)
Die Frage ist nur, was der Fehler bedeutet. Mein Zertifikat ist korrekt, die keyfile (CA-Zertifikat) möglicherweise nicht.
Sie erwähnen, dass die key -Datei nicht richtig sein könnte. Cert laden schlägt fehl, wenn das Zertifikat (öffentlicher Schlüssel) nicht mit dem richtigen private key-Datei.
Sie haben
Wie wählen schrecklich Variablennamen können Fehler im code? Irgendwelche Vorschläge (oder Konvention) auf, wie Sie diese benennen? Die ca_cert-Datei beginnt mit
Menschen, die down-vote eine Frage sollte zumindest einen Kommentar hinterlassen, warum, und vielleicht sogar zu verbessern, ist die Frage.
Ich habe ein Rollback der letzten Version hier, da die Antworten sollten nicht bearbeitet werden, in Frage.
Sie haben
keyfile=ca_cert
, die wahrscheinlich falsch sind (oder die Sie gewählt haben, schrecklich Variablen-Namen). Hat Ihr ca_cert
wirklich enthalten einen privaten Schlüssel?Wie wählen schrecklich Variablennamen können Fehler im code? Irgendwelche Vorschläge (oder Konvention) auf, wie Sie diese benennen? Die ca_cert-Datei beginnt mit
-----BEGIN CERTIFICATE-----
, was scheint zu sein, einen gültigen Schlüssel verschlüsselt, und endet mit -----END CERTIFICATE-----
. Sollte Kopf-und Fußzeile etwas anderes sagen?Menschen, die down-vote eine Frage sollte zumindest einen Kommentar hinterlassen, warum, und vielleicht sogar zu verbessern, ist die Frage.
Ich habe ein Rollback der letzten Version hier, da die Antworten sollten nicht bearbeitet werden, in Frage.
InformationsquelleAutor sargas | 2015-05-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unter der Annahme, dass version 3.4 verwendet:
Finden Sie unter: https://github.com/python/cpython/blob/3.4/Modules/_ssl.c#L2529-L2535
Was es sagt, ist, dass
SSL_CTX_check_private_key
fehlgeschlagen; so, den privaten Schlüssel ist nicht korrekt.Ich lese es vor, hatte aber keine Ahnung, was das bedeutete. Ich denke, es ist mit openssl (auf Unix-Systemen) und die den Fehler meldet, es habe bei system-Ebene. Das erklärt, warum die Fehler erzeugen würde, aus dieser Zeile in der Quelle, richtig?
InformationsquelleAutor jmunsch
In Ihrem code, den Sie anrufen:
Aus der Dokumentation:
Basierend auf dem Namen der Argumente in deinem Beispiel sieht es aus wie Sie die übergabe eines CA-Zertifikats um die
keyfile
argument. Das ist falsch, du musst in den privaten Schlüssel, der zum generieren der lokalen Zertifikat (sonst kann der client nicht Ihr Zertifikat). Eine private key-Datei wird ungefähr so Aussehen:Müssen Sie nur das CA-Zertifikat wenn Sie versuchen, um zu überprüfen, die Gültigkeit von SSL-Zertifikaten, wurden mit diesem Zertifikat signiert wurden. In diesem Fall würden Sie wahrscheinlich verwenden
SSLContext.load_verify_locations()
laden Sie das CA-Zertifikat (obwohl ich nicht gearbeitet, der mit dem SSL-Modul vor kurzem, so nehmen Sie nicht mein Wort an diesem Punkt).InformationsquelleAutor larsks