Non posso richiedere lo stato di ocsp con una catena di certificati

3

Ho distribuito il server ocsp di base da OpenSSl Cookbook da Ivan Ristic pagina 44 con il seguente comando

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

I certificati hanno la seguente catena root-ca -> root-ocsp e root-ca -> sub-ca -> server e voglio richiedere lo stato di 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

Cosa sto facendo male?

$ 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

Intero progetto zip (ovunque la password sia pass )

    
posta srghma 24.03.2017 - 20:57
fonte

2 risposte

4

Hai la seguente configurazione:

  • server.crt è emesso da sub-ca.crt, sub-ca.crt viene emesso da root-ca.crt
  • La risposta OCSP è firmata da root-ocsp.crt che è stata emessa da root-ca.crt

Il processo per convalidare una risposta OCSP è descritto in RFC 2560 sezione 4.2.2.2 . In breve, la risposta OCSP deve essere

  • firmati dall'emittente del certificato in questione, cioè firmati da sub-ca.crt nel tuo caso.
  • o firmato da un risponditore progettato. Questo risponditore deve avere un utilizzo esteso della chiave di OCSPSigning e deve essere rilasciato dall'emittente del certificato in questione . Ciò significa che il certificato di responder deve essere firmato da sub-ca.crt.

Stai tentando di utilizzare il risponditore designato. Il rispondente ha l'uso corretto della chiave estesa. Ma il responder è emesso da root-ca.crt mentre il certificato in questione è emesso da sub-ca.crt. Ciò è in conflitto con il requisito che l'emittente del certificato responder deve essere l'emittente del certificato interrogato e quindi la validazione fallisce.

    
risposta data 27.03.2017 - 16:37
fonte
2

Non ho molto da usare per aggiungere alla risposta di Steffen, ma ho trovato due punti aggiuntivi minori che potrebbero essere utili anche:

1) Secondo le pagine man di openssl e OCSP, il parametro -issuer deve essere in formato pem, non .crt.

2) Esiste un'opzione di comando -text che dovrebbe fornire un output più dettagliato

Sulla base di quanto sopra, penserei che un comando migliore dovrebbe essere simile a questo, dovrai comunque aggiungere server.pem, dato che non riesco a vederlo nei file forniti:

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

    
risposta data 27.03.2017 - 16:51
fonte

Leggi altre domande sui tag