Come ottenere openssl per usare un certificato senza specificarlo tramite -Cafile

1

Sto usando questo comando:

openssl s_client -connect example.com:443 -CAfile /etc/ssl/certs/GTE_CyberTrust_Global_Root.pem

Funziona. Se non specifichi che CAfile ottengo un codice 20. Il certificato è in /etc/ssl/certs e /usr/lib/ssl/certs -> /etc/ssl/certs È anche incluso in ca-certificates.crt

Che cosa sta governando se openssl può trovare o meno il mio certificato e come posso convincerlo ad accettare questo certificato senza specificarlo esplicitamente?

    
posta Ben Flynn 08.11.2016 - 19:03
fonte

1 risposta

1

Esiste un bug OpenSSL noto in cui s_client non controlla l'archivio certificati predefinito quando non si passa l'argomento -CApath o -CAfile . OpenSSL su Ubuntu 14.04 soffre di questo bug come dimostrerò:

Versione:

ubuntu@puppetmaster:/etc/ssl$ openssl version
OpenSSL 1.0.1f 6 Jan 2014

Non riesco a utilizzare l'archivio predefinito quando non passo "-ca:

ubuntu@puppetmaster:/etc/ssl$ openssl s_client -quiet -connect gmail.com:443
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
verify return:0

Ora passo null come -CApath e funziona:

ubuntu@puppetmaster:/etc/ssl$ openssl s_client -quiet -connect gmail.com:443 -CApath /dev/null
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = mail.google.com
verify return:1

Purtroppo non penso che esista un elenco di versioni OpenSSL interessate. L'unico modo per saperlo è testarlo.

    
risposta data 08.11.2016 - 21:34
fonte

Leggi altre domande sui tag