OpenSSL sigue diciéndome "no puedo obtener el certificado del emisor local"

OpenSSL sigue diciéndome "no puedo obtener el certificado del emisor local"

Estoy usando CentOS, que tiene instalado OpenSSL 1.0.2k-fips, y he creado e instalado la versión 1.1.0g junto con él como parte de una instalación HTTP2 que se describe aquí:https://www.tunetheweb.com/rendimiento/http2/

He estado usando la multa 1.1.0g, pero últimamente renové los certificados y ahora parece perdido al intentar verificar la CA. La ubicación del archivo CA no ha cambiado, la versión 1.0.2k-fips parece estar bien, pero la 1.1.0g no deja de quejarse:

Verify return code: 20 (unable to get local issuer certificate)

Entonces, verifiqué que los certificados son buenos, la ubicación no ha cambiado, no cambié manualmente ninguna configuración.

Pensé que tal vez debería reconstruir la versión 1.1.0g, pero eso no cambia nada. También intenté usar la -CApathopción para el opensslcomando, así (usando el mismo directorio que usa 1.0.2k-fips):

echo | /usr/local/ssl/bin/openssl s_client -connect example.com:443 -CApath /etc/pki/tls

También lo intenté -CAfile, señalando directamente el ca-bundle.crtque sé que tiene los certificados correctos (1.0.2k-fips los usa sin problemas), pero todavía no hay cambios.

No tengo ni idea de por qué no recoge mis certificados y me pregunto si este problema ya existía antes de cambiar los certificados (verifiqué si funcionaban después de cambiarlos, es posible que 1.1.0g ya estuviera roto en ese punto).

Estoy pensando que podría deberse a actualizaciones realizadas en el sistema, rompiendo algún enlace o archivo, pero ¿dónde buscar cuando todo el certificado parece normal? ¿O a 1.1.0g le faltan algunos otros certificados que debo señalar?

Respuesta1

Puede hacer que s_client le muestre la cadena de certificados con -showcerts:

openssl s_client -connect example.com:443 -showcerts </dev/null

Esto comenzará con la cadena de certificados y luego mostrará otra información sobre el certificado del servidor y la conexión TLS. Todo eso debería ayudarle a descubrir dónde está el problema. Puede que esté en un certificado intermedio, no en la CA.

Puede obtener un resumen rápido de la cadena de certificados filtrando el resultado:

openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null |
sed -e '1,/Certificate chain/d' -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/d' -e '/---/,$d'

información relacionada