No se puede solicitar el estado ocsp con la cadena de certificados

3

He implementado un servidor ocsp básico de OpenSSl Cookbook por Ivan Ristic página 44 con el siguiente comando

$ openssl ocsp -port 9080 -index db/index -rsigner root-ocsp.crt -rkey private/root-ocsp.key -CA root-ca.crt -text

Los certificados tienen las siguientes cadenas root-ca -> root-ocsp y root-ca -> sub-ca -> server y quiero solicitar el estado de server.crt .

$ openssl ocsp -issuer root-ca.crt -issuer sub-ca.crt  -CAfile root-ocsp.crt -cert server.crt -url http://127.0.0.1:9080
Response Verify Failure
139779327862424:error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:ocsp_vfy.c:138:Verify error:unable to get localissuer certificate
server.crt: unknown
        This Update: Mar 24 19:44:15 2017 GMT

$ openssl ocsp -issuer root-ca.crt -issuer sub-ca.crt  -CAfile root-ca.crt -cert server.crt -url http://127.0.0.1:9080
Response Verify Failure
140137564870296:error:27069070:OCSP routines:OCSP_basic_verify:root ca not trusted:ocsp_vfy.c:166:
server.crt: unknown
        This Update: Mar 24 19:51:42 2017 GMT

$ openssl ocsp -issuer sub-ca.crt -issuer root-ca.crt  -CAfile root-ocsp.crt -verify_other root-ca.crt -cert server.crt -url http://127.0.0.1:9080
Response Verify Failure
140252372211352:error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:ocsp_vfy.c:138:Verify error:self signed certificate in certificate chain
server.crt: unknown
        This Update: Mar 24 19:53:15 2017 GMT

 $ openssl ocsp -issuer sub-ca.crt -issuer root-ca.crt -CAfile root-ca.crt -verify_other root-ocsp.crt -cert server.crt -url http://127.0.0.1:9080
Response Verify Failure
140563322316440:error:27069070:OCSP routines:OCSP_basic_verify:root ca not trusted:ocsp_vfy.c:166:
server.crt: unknown
        This Update: Mar 24 19:54:16 2017 GMT

¿Qué estoy haciendo mal?

$ ll
total 96
drwxr-xr-x 2 bjorn users     4096 Mar 24 11:19 certs
drwxr-xr-x 2 bjorn users     4096 Mar 24 11:19 db
-rw-r--r-- 1 bjorn wireshark 3160 Mar 19 13:08 ocsp_recording.pcapng
drwxr-xr-x 2 bjorn users     4096 Mar 24 10:56 private
-rw-r--r-- 1 bjorn users     2542 Mar 24 11:03 root-ca.conf
-rw-r--r-- 1 bjorn users      934 Mar 17 21:50 root-ca.crl
-rw-r--r-- 1 bjorn users     6876 Mar 17 21:39 root-ca.crt
-rw-r--r-- 1 bjorn users     1732 Mar 16 14:29 root-ca.csr
-rw-r--r-- 1 bjorn users     5747 Mar 19 10:09 root-ocsp.crt
-rw-r--r-- 1 bjorn users      948 Mar 17 22:07 root-ocsp.csr
-rw-r--r-- 1 bjorn users     5103 Mar 24 11:19 server.crt
-rw-r--r-- 1 bjorn users      980 Mar 24 11:03 server.csr
-rw-r--r-- 1 bjorn users     2436 Mar 16 14:11 sub-ca.conf
-rw-r--r-- 1 bjorn users     6682 Mar 17 22:03 sub-ca.crt
-rw-r--r-- 1 bjorn users      928 Mar 17 21:58 sub-ca.csr

Código postal completo del proyecto (la contraseña en todas partes es pass )

    
pregunta srghma 24.03.2017 - 20:57
fuente

2 respuestas

4

Tiene la siguiente configuración:

  • server.crt es emitido por sub-ca.crt, sub-ca.crt es emitido por root-ca.crt
  • La respuesta de OCSP está firmada por root-ocsp.crt que fue emitida por root-ca.crt

El proceso para validar una respuesta OCSP se describe en RFC 2560 sección 4.2.2.2 . En resumen, la respuesta de OCSP debe ser

  • ya sea firmado por el emisor del certificado en cuestión, es decir, firmado por sub-ca.crt en su caso.
  • o firmado por un respondedor diseñado. Este respondedor debe tener un uso de clave extendido de OCSPSigning y debe ser emitido por el emisor del certificado en cuestión . Esto significa que el certificado de los encuestados debe estar firmado por sub-ca.crt.

Estás tratando de usar el respondedor designado. Su respondedor tiene el uso correcto de la clave extendida. Pero el respondedor es emitido por root-ca.crt mientras que el certificado en cuestión es emitido por sub-ca.crt. Esto entra en conflicto con el requisito de que el emisor del certificado del respondedor debe ser el emisor del Certificado consultado y por lo tanto la validación falla.

    
respondido por el Steffen Ullrich 27.03.2017 - 16:37
fuente
2

No tengo mucho que agregar a la respuesta de Steffen, pero encontré dos puntos adicionales menores que también podrían ser útiles:

1) De acuerdo con las páginas man de openssl y OCSP, el parámetro -issuer debe estar en Formato pem, no .crt.

2) Hay una opción de comando -text que debería dar un resultado más detallado

En base a lo anterior, creo que un comando mejor debería tener un aspecto similar a este, deberá agregar server.pem, ya que no puedo verlo en los archivos provistos:

openssl ocsp -issuer serverchain.pem -cert server.pem -text -url http://127.0.0.1:9080

    
respondido por el Ter9 27.03.2017 - 16:51
fuente

Lea otras preguntas en las etiquetas