Когда я использовал openssl API для проверки сертификата сервера (самоподписанного), я получил следующую ошибку:
error 19 at 1 depth lookup:self signed certificate in certificate цепочка
Согласно openssl документации, эта ошибка (19) является
"X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: self signed certificate in цепочке сертификатов - цепочка сертификатов могла быть построена с использованием недоверенных сертификатов, но корень не может быть найден локально."
Почему возникает эта ошибка? Может быть, проблемы с сертификатом моего сервера?
Сертификат у вас самоподписанный, поэтому по умолчанию он недоверенный, о чем и сообщает OpenSSL. На самом деле это предупреждение - хорошая вещь, поскольку подобный сценарий может возникнуть и в результате атаки man-in-the-middle.
Чтобы решить эту проблему, необходимо установить его как доверенный сервер. Если он подписан недоверенным центром сертификации, то необходимо установить и сертификат этого центра.
Посмотрите эту ссылку об установке самоподписанных сертификатов.
Приведем однострочный пример проверки цепочки сертификатов:
openssl verify -verbose -x509_strict -CAfile ca.pem cert_chain.pem
.
Это не требует установки CA куда-либо.
Подробности см. на сайте https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-work.
Решением ошибки является добавление этой строки в верхней части кода:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";