Замена сертификата и ключа CA

Я управляю своим собственным CA, используя openssl и используя его (и сертификаты, которые он подписывает) с stunnel, Из-за истечения срока действия сертификата CA я хочу иметь возможность создать новый сертификат CA и ключ (имеющий тот же dn, что и старый сертификат) и настроить stunnel доверять обоим на некоторое время, пока я выкатываю этот новый CA.

Поскольку старый и новый сертификат CA имеют одинаковые имена, они имеют одинаковый хэш, поэтому я использую stunnel"s -CApath вариант передачи каталога, содержащего оба <hash>.0 а также <hash>.1, Я также попытался передать сертификаты CA через -CAfileно это, похоже, не помогает.

Согласно документам openssl:

Сопоставление сертификата выполняется на основе имени субъекта, идентификатора ключа (если имеется) и серийного номера, взятого из сертификата, подлежащего проверке. Если эти данные не совпадают, будет проверен следующий сертификат.

Хотя имя субъекта CA одинаково, идентификатор ключа и серийный номер различаются, поэтому я ожидаю, что openssl будет правильно обрабатывать это во время согласования TLS. То есть сначала загрузите старый сертификат и, обнаружив, что он не совпадает с идентификатором ключа / серийным номером, загружающим новый сертификат. Поскольку это действительно совпадает, оно тогда выполнит проверку. Я знаю, что openssl загружает как старые, так и новые сертификаты.

Я вижу, что stunnel (конец настроен с client=no) отклоняет сертификат, подписанный новым ключом CA с:

2018.12.21 05:24:46 LOG4[0]: CERT: Pre-verification error: certificate signature failure 2018.12.21 05:24:46 LOG4[0]: Rejected by CERT at depth=0: CN=down 2018.12.21 05:24:46 LOG7[0]: TLS alert (write): fatal: decrypt error 2018.12.21 05:24:46 LOG3[0]: error queue: 1417C086: error:1417C086:SSL routines:tls_process_client_certificate:certificate verify failed 2018.12.21 05:24:46 LOG3[0]: error queue: D0C5006: error:0D0C5006:asn1 encoding routines:ASN1_item_verify:EVP lib 2018.12.21 05:24:46 LOG3[0]: error queue: 4067072: error:04067072:rsa routines:rsa_ossl_public_decrypt:padding check failed 2018.12.21 05:24:46 LOG3[0]: SSL_accept: 407008A: error:0407008A:rsa routines:RSA_padding_check_PKCS1_type_1:invalid padding 2018.12.21 05:24:46 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket

Если новый CA имеет имя, отличное от старого CA, то все работает как положено, но документация подсказывает мне, что использование другого имени для нового сертификата не должно быть необходимым. Это то, что openssl и действительно поддерживает? Если так, что может быть не так с моими сертификатами или stunnel Конфигурация, чтобы предотвратить это?

0 ответов

Другие вопросы по тегам