Openssl: ошибка "самоподписанный сертификат в цепочке сертификатов"
Когда я использовал API-интерфейсы openssl для проверки сертификата сервера (самостоятельно подписанный), я получил следующую ошибку:
ошибка 19 при 1 глубине поиска: самозаверяющий сертификат в сертификате цепь
В соответствии с openssl документация, эта ошибка (19) равна
"X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: самоподписанный сертификат в цепочка сертификатов - цепочка сертификатов может быть создана с использованием ненадежные сертификаты, но корень не может быть найден локально.
Почему возникает эта ошибка? Любые проблемы с сертификатом сервера?
Ответы
Ответ 1
У вас есть сертификат, который является самозаверяющим, поэтому он не доверяет по умолчанию, поэтому OpenSSL жалуется. Это предупреждение на самом деле хорошо, потому что этот сценарий может также возникнуть из-за атаки man-in-the-middle.
Чтобы решить эту проблему, вам необходимо установить ее как надежный сервер. Если он подписан не доверенным ЦС, вам также потребуется установить этот сертификат ЦС.
Посмотрите эту ссылку об установке самозаверяющих сертификатов.
Ответ 2
Ниже приведен пример однострочной проверки цепочки сертификатов:
openssl verify -verbose -x509_strict -CAfile ca.pem cert_chain.pem
Это не требует установки CA в любом месте.
См. Как работает цепочка цепочек сертификатов SSL? для получения более подробной информации.