Неизвестный статус OCSP при передаче сертификата, хороший статус при передаче серийного номера
-
20-12-2019 - |
Вопрос
Хорошо, у меня есть многоуровневая система CA, которая выглядит так:
-ROOT_CA
----промежуточный_CA
--------промежуточный_CA2
------------клиентские сертификаты...
У меня есть ответчик OCSP, настроенный на промежуточном_CA2, который запускается следующим образом:
$ 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
На стороне клиента я делаю запрос ocsp следующим образом:
$ openssl ocsp -issuer ca_crt_chain.crt -CAfile ca_crt_chain.crt -cert client.crt -text -host localhost:xxxx -verify_other... -trust_other
Обратите внимание, что client.crt — это всего лишь сертификат клиента, а не вся цепочка, хотя я пробовал оба способа, и ни один из них не помог.Он всегда возвращается
Response verify OK
client.crt: unknown
Если я изменюсь -cert client.crt
к -serial 0xXXXXXXXXX
(Очевидно, если передать действительный серийный номер, соответствующий client.crt), тогда все работает:
Response verify OK
0xXXXXXXXXX: good
Как ни странно, если я проверю запрос в первом примере, он действительно отправляет правильный серийный номер.
Я не могу хоть убей это понять.Есть идеи?
Решение
Итак, решение состоит в том, что, по-видимому, openssl ocsp не любит цепочки файлов.Итак, мой вызов сервера теперь выглядит так:
$ 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
Обратите внимание, что было бы предпочтительнее иметь совершенно отдельную пару ключей для подписи, но без нее.
Клиентское соединение тогда будет выглядеть так:
$ openssl ocsp -issuer intermediate_ca_2.crt -CApath /path/to/trust/store -cert client.crt -text -url http://localhost:xxxx