Nessus informa que un "Certificado SSL no se puede confiar".
Esto se debe a que el certificado intermedio no se encuentra en el paquete de certificado presentado durante el protocolo de enlace TLS / SSL.
He visto un par de hilos similares:
-
Use openssl para verificar individualmente los componentes de una cadena de certificados
-
¿Cómo verificar una firma de una entidad por otra utilizando OpenSSL CLI?
Esto no es un problema ya que la mayoría de los navegadores descargarán certificados intermedios.
Si intento con openssl para verificar el certificado:
openssl s_client -connect example.com:443 -showcerts </dev/null
La salida solo muestra el primer certificado y luego un error unable to get local issuer certificate
.
O si intento enlace obtengo el mismo error:
Chain of trust NOT ok (chain incomplete)
¿Hay algún método que pueda usar que actúe de la forma en que lo haría un navegador y descarga cualquier certificado intermedio?
Incluso si hay una manera de identificar desde dónde descargar certificados intermedios, me complace codificar algo que haría esto, pero es solo saber qué buscar en la respuesta del certificado del servidor.
Actualizar
En ejecución
openssl x509 -in g0 -text
proporciona la información AIA para las URL intermedias de descarga de certificados
Authority Information Access:
OCSP - URI:http://ocsp.int-x3.letsencrypt.org
CA Issuers - URI:http://cert.int-x3.letsencrypt.org/
Entonces podemos correr:
wget http://cert.int-x3.letsencrypt.org/ -O intermed.der
entonces
openssl x509 -inform DER -in intermed.der -out intermed.pem -outform PEM
entonces
openssl x509 -in intermed.pem -text
Lo que da
Authority Information Access:
OCSP - URI:http://isrg.trustid.ocsp.identrust.com
CA Issuers - URI:http://apps.identrust.com/roots/dstrootcax3.p7c
Pero esto está en un formato diferente y al intentar convertirlo se produce un error:
openssl pkcs7 -print_certs -in dstrootcax3.p7c -out dstrootcax3
unable to load PKCS7 object
139884641126208:error:0906D06C:PEM routines:PEM_read_bio:no start line:crypto/pem/pem_lib.c:691:Expecting: PKCS7
En relación con comentario de Steffen Ullrich , esto tiene sentido y explicaría por qué A veces funciona mejor que el certificado no se puede descargar. Sin embargo, todavía me gustaría imaginar este con el objetivo final de utilizar openssl para verificar toda la cadena, incluidos los certificados intermedios descargables.