У меня следующая цепочка сертификатов:
Самоподписанный сертификат -> Промежуточный -> Сертификат клиента, Сертификат сервера. У меня есть приложение для ssl-связи, а также проверяю настройки однорангового узла. Я пытаюсь проверить эту цепочку с помощью команды openssl s_client
и получаю Verify код возврата: 19 (самоподписанный сертификат в цепочке сертификатов)
. Сервер отправляет всю цепочку в рукопожатии.
Я попытался проверить это с помощью Bundle.pem, который содержит самоподписанные и промежуточные сертификаты, а также самоподписанный.pem, но результат тот же.
openssl s_client -msg -connect localhost:1500 -CAfile Self-signed.pem/Bundle.pem -cert Client.crt -key Client.key
] Затем я выпустил еще один промежуточный сертификат, и из него я выпустил новый сертификат сервера
openssl s_client -msg -connect localhost:1500 -CAfile Bundle2.pem -cert Client.crt -key Client.key
Bundle2.pem содержит второй промежуточный сертификат и самозаверяющий сертификат, и он отлично работает. Кроме того, теперь сервер не отправляет всю цепочку сертификатов, это зависит от того, как разработано приложение.
Может ли кто-нибудь объяснить, почему это проблема, почему я не могу выполнить успешную проверку, если сервер и клиент имеют один и тот же промежуточный сертификат?
Решена путем добавления basicConstraints = CA: TRUE
в openssl.conf
к промежуточному сертификату при выдаче