Hintergrund:Was ist meine OpenSSL und ssl Standard CA Certs Path?
Ich versuche, eine SSL-Kontext-Verbindung mit einem externen Anbieter für Handshake zu erstellen und dann eine XML über diese Verbindung kommuniziert mit.
clientCert = path["cert_path"]
clientKey = path["key_path"]
PROTOCOL = ssl.PROTOCOL_TLSv1
context = ssl.SSLContext(PROTOCOL)
context.load_default_certs()
context.load_cert_chain(clientCert, clientKey)
conn = httplib.HTTPSConnection(uri, 443, context=context)
conn.request("POST", '/', headers=headers, body=signedRequest) # code breaks here
response = conn.getresponse()
aber dieser Code bricht sagen:
SSLError(1, u'[SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:590)
Jetzt weiß ich, dass die CA-Zertifikate auf dem Server korrekt platziert sind, irgendwo der Weg vermasselt wird immer.
Frage
Wie kann ich sehen, was der CA-Pfad, von dem aus diese ssl
und openssl
aus der CA-Zertifikate auswählen.
Openssl scheint die richtige Verbindung herzustellen, deshalb muss ich explizit hier den Pfad zu ssl angeben.
requests.utils
Pfad kann wie folgt gefunden werden, auf der Suche nach etwas ähnliches verstehen für context.load_default_certs()
In [1]: from requests.utils import DEFAULT_CA_BUNDLE_PATH
In [2]: print(DEFAULT_CA_BUNDLE_PATH)
/usr/local/python/path/site-packages/certifi/cacert.pem