Cómo obtener openssl para usar un certificado sin especificarlo a través de -CAfile

1

Estoy usando este comando:

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

Funciona. Si no especifico que CAfile obtengo un código 20. El certificado está en /etc/ssl/certs y /usr/lib/ssl/certs -> /etc/ssl/certs También se incluye en el ca-certificates.crt

¿Qué determina si openssl puede encontrar mi certificado o no y cómo puedo hacerlo para que acepte este certificado sin especificarlo explícitamente?

    
pregunta Ben Flynn 08.11.2016 - 19:03
fuente

1 respuesta

1

Hay un error conocido de OpenSSL donde s_client no comprueba el almacén de certificados predeterminado cuando no se pasa el argumento -CApath o -CAfile . OpenSSL en Ubuntu 14.04 sufre este error como lo demostraré:

Versión:

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

No puedo usar la tienda predeterminada cuando no paso el '-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

Ahora paso nulo como -CApath y funciona:

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

Lamentablemente, no creo que exista una lista de las versiones de OpenSSL afectadas. La única forma de saberlo es probarlo.

    
respondido por el Antonius Bloch 08.11.2016 - 21:34
fuente

Lea otras preguntas en las etiquetas