OpenSSL-retourcode verifiëren: 20 (kan certificaat van lokale uitgever niet ophalen)

Ik gebruik Windows Vista en probeer verbinding te maken via https om een bestand in een meerdelige vorm te uploaden, maar ik heb wat problemen met het certificaat van de lokale uitgever. Ik probeer gewoon uit te zoeken waarom dit nu niet werkt, en ga later terug naar mijn cURL-code nadat dit is uitgewerkt. Ik voer het commando uit:

openssl s_client -connect connect_to_site.com:443

Het geeft me een digitaal certificaat van VeriSign, Inc., maar geeft ook een foutmelding:

Verify return code: 20 (unable to get local issuer certificate)

Wat is het lokale uitgeverscertificaat? Is dat een certificaat van mijn eigen computer? Is er een manier om dit te omzeilen? Ik heb geprobeerd het bestand -CAfile mozilla.pem te gebruiken, maar ik krijg nog steeds dezelfde foutmelding.


Antwoord 1, autoriteit 100%

Ik had hetzelfde probleem en loste het op door een pad door te geven naar een map waar CA-sleutels zijn opgeslagen. Op Ubuntu was het:

openssl s_client -CApath /etc/ssl/certs/ -connect address.com:443

Antwoord 2, autoriteit 19%

Deze fout treedt ook op als u een zelfondertekend certificaat gebruikt met een keyUsagewaarbij de waarde keyCertSignontbreekt.


Antwoord 3, autoriteit 15%

Oplossing:
U moet expliciet de parameter -CAfile your-ca-file.pemtoevoegen.

Opmerking: ik heb ook geprobeerd param -CApathgenoemd in een ander antwoord, maar het werkt niet voor mij.

Uitleg:
Fout unable to get local issuer certificatebetekent dat de openssluw root-CA-certificaat niet kent.


Opmerking: als u een webserver met meer domeinenheeft, vergeet dan niet om ook de parameter -servername your.domain.nettoe te voegen. Deze parameter zal “De servernaam van de TLS-extensie instellen in ClientHello”. Zonder deze parameter bevat het antwoord altijd het standaard SSL-certificaat (geen certificaat, dat overeenkomt met uw domein).


Antwoord 4, autoriteit 3%

Is uw server geconfigureerd voor clientverificatie? Als dit het geval is, moet u het clientcertificaat behalen terwijl u verbinding maakt met de server.


Antwoord 5, autoriteit 3%

Ik had hetzelfde probleem op OSX OpenSSL 1.0.1i van Macports, en moest ook CApath specificeren als een tijdelijke oplossing (en zoals vermeld in het Ubuntu-bugrapport, zal zelfs een ongeldigeCApath openssl maken kijk in de standaardmap).
Interessant is dat verbinding maken met dezelfde server met behulp van PHP’s openssl-functies (zoals gebruikt in PHPMailer 5) prima werkte.


Antwoord 6, autoriteit 3%

zet uw CA & rootcertificaat in /usr/share/ca-certificate of /usr/local/share/ca-certificate.
Dan

dpkg-reconfigure ca-certificaten

of installeer het ca-certificate pakket zelfs opnieuw met apt-get.

Hierna wordt uw certificaat verzameld in de database van het systeem:
/etc/ssl/certs/ca-certificates.crt

Dan zou alles in orde moeten zijn.


Antwoord 7, autoriteit 2%

Met client-authenticatie:

openssl s_client -cert ./client-cert.pem -key ./client-key.key -CApath /etc/ssl/certs/ -connect foo.example.com:443

Antwoord 8, autoriteit 2%

Maak het certificaatketenbestand met de tussenliggende en root-ca.

cat intermediate/certs/intermediate.cert.pem certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
chmod 444 intermediate/certs/ca-chain.cert.pem

Verifieer vervolgens

openssl verify -CAfile intermediate/certs/ca-chain.cert.pem \
  intermediate/certs/www.example.com.cert.pem

www.voorbeeld.com.cert.pem: OK
Het certificaat implementeren


Antwoord 9

Ik had hetzelfde probleem,
Het werd opgelost nadat de onderwerpwaarde van de uitgever in het certificaat was behouden, aangezien deze het onderwerp is van het certificaat van de uitgever.

dus controleer alstublieft “de waarde van het onderwerp van de uitgever in het certificaat (cert.pem) == onderwerp van de uitgever (CA.pem)”

openssl verifiëren -CAfile CA.pem cert.pem
cert.pem: OK


Antwoord 10

deze foutmeldingen betekenen dat:
CABundle wordt niet gegeven door (-CAfile …)
OF
het CABundle-bestand wordt niet afgesloten door een zelfondertekend rootcertificaat.

Maak je geen zorgen. De verbinding met de server werkt zelfs
je krijgt dit bericht van openssl s_client …
(ervan uitgaande dat je ook geen andere fout maakt)

Other episodes