OCSP-Status unbekannt beim Bestehen des Zertifikats, guter Status beim Bestehen der Seriennummer
-
20-12-2019 - |
Frage
Okay, ich habe also ein mehrschichtiges CA-System, das so aussieht:
-ROOT_CA
----intermediate_CA
--------intermediate_CA2
------------Client-Zertifikate...
Ich habe einen OCSP-Responder auf „intermediate_CA2“ eingerichtet, der wie folgt gestartet wird:
$ openssl ocsp -index intermedia_ca_2_index.txt -CA ca_crt_chain.crt -rsigner intermedia_ca_2.crt -rkey intermedia_ca_2.key -port xxxx -text
Auf der Clientseite stelle ich eine OCSP-Anfrage wie folgt:
$ openssl ocsp -issuer ca_crt_chain.crt -CAfile ca_crt_chain.crt -cert client.crt -text -host localhost:xxxx -verify_other... -trust_other
Beachten Sie, dass es sich bei client.crt nur um das Client-Zertifikat handelt, nicht um die gesamte Kette, obwohl ich beide Möglichkeiten ausprobiert habe und keine davon funktioniert hat.Es kommt immer wieder
Response verify OK
client.crt: unknown
Wenn ich mich ändere -cert client.crt
Zu -serial 0xXXXXXXXXX
(Natürlich wird eine gültige Seriennummer übergeben, die mit client.crt übereinstimmt.) Dann funktioniert alles mit:
Response verify OK
0xXXXXXXXXX: good
Seltsamerweise wird, wenn ich die Anfrage im ersten Beispiel untersuche, tatsächlich die richtige Seriennummer gesendet.
Ich kann das beim besten Willen nicht herausfinden.Irgendwelche Ideen?
Lösung
Die Lösung ist also, dass OpenSSL OCSP anscheinend keine Kettendateien mag.Mein Serveraufruf sieht jetzt also so aus:
$ openssl ocsp -index intermedia_ca_2_index.txt -CA intermediate_ca_2.crt -rsigner intermedia_ca_2.crt -rkey intermedia_ca_2.key -port xxxx -text
Beachten Sie, dass es besser wäre, ein völlig separates Schlüsselpaar zum Signieren zu haben, aber w/e.
Die Client-Verbindung würde dann so aussehen:
$ openssl ocsp -issuer intermediate_ca_2.crt -CApath /path/to/trust/store -cert client.crt -text -url http://localhost:xxxx