Toen ik openssl API’s gebruikte om het servercertificaat (zelfondertekend) te valideren, kreeg ik de volgende foutmelding:
fout 19 bij 1 diepte opzoeken: zelfondertekend certificaat in certificaat
ketting
Volgens openssl documentatieis deze fout (19)
“X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: zelfondertekend certificaat in
certificaatketen – de certificaatketen kan worden opgebouwd met behulp van de
niet-vertrouwde certificaten, maar de root kon niet lokaal worden gevonden.”
Waarom treedt deze fout op? Problemen met mijn servercertificaat?
Antwoord 1, autoriteit 100%
Je hebt een certificaat dat zelfondertekend is, dus het is standaard niet-vertrouwd, daarom klaagt OpenSSL. Deze waarschuwing is eigenlijk een goede zaak, omdat dit scenario ook kan ontstaan door een man- in-the-middle-aanval.
Om dit op te lossen, moet je het installeren als een vertrouwde server. Als het is ondertekend door een niet-vertrouwde CA, moet u ook het certificaat van die CA installeren.
Bekijk deze linkover het installeren van zelf- ondertekende certificaten.
Antwoord 2, autoriteit 74%
Hier is een one-liner om te verifiëren dat het certificaat moet worden ondertekend door een specifieke CA:
openssl verify -verbose -x509_strict -CAfile ca.pem certificate.pem
Hiervoor hoeft u CA nergens te installeren.
Zie Hoe werkt een SSL-certificaat kettingbundel? Voor details en corrigeer certificaatketenafhandeling.
Antwoord 3, Autoriteit 13%
Als u charles probeert te bouwen en proberen een Docker Container Dan krijg je de meeste waarschijnlijk deze fout.
Zorg ervoor dat u Charles (MacOS) uitschakelt onder proxy -> macOS proxy
Charles is een
HTTP proxy / http-monitor / omgekeerde proxy waarmee een ontwikkelaar alle HTTP- en SSL / HTTPS-verkeer tussen hun machine en internet kan bekijken.
Zoiets kan evenwel hetzelfde probleem veroorzaken.
Antwoord 4, Autoriteit 9%
De oplossing voor de fout is om deze regel toe te voegen aan de bovenkant van de code:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";