2016-04-06 3 views
4

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 

Antwort

4

ok ... es gefunden:

Befehl wäre openssl version -a

[[email protected] ~]$ openssl version -a 
OpenSSL 1.0.1e-fips 11 Feb 2013 
built on: Thu Jul 23 19:06:35 UTC 2015 
platform: linux-x86_64 
options: bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM 
OPENSSLDIR: "/etc/pki/tls" 
engines: rdrand dynamic 

In der Ausgabe wäre ein Wert OPENSSLDIR, dies wäre der Basispfad

OPENSSLDIR: "/etc/pki/tls" 

Die meisten Fälle, wäre dies ein symbolischer Link sein, verwenden ls -la dieser OPENSSLDIR Weg

[[email protected] ~]$ ls -la /etc/pki/tls 
total 32 
drwxr-xr-x. 5 root root 4096 Apr 6 10:09 . 
drwxr-xr-x. 11 root root 4096 Apr 4 08:47 .. 
lrwxrwxrwx 1 root root 19 Apr 6 10:09 cert.pem -> certs/ca-bundle.crt 
drwxr-xr-x. 4 root root 4096 Mar 22 18:15 certs 

Weitere ls -la

[[email protected] ~]$ ls -la /etc/pki/tls/certs/ 
total 1908 
drwxr-xr-x. 4 root root  4096 Mar 22 18:15 . 
drwxr-xr-x. 5 root root  4096 Apr 6 10:09 .. 
lrwxrwxrwx 1 root root  49 Apr 6 09:54 ca-bundle.crt -> /etc/pki/ca-trust/some/path/of/cert/tls-ca-bundle.pem 

und Sie den tatsächlichen Pfad erhalten:

/etc/pki/ca-trust/some/path/of/cert/tls-ca-bundle.pem 
Verwandte Themen