Die OpenSSL-Verifizierung schlägt mit einem von einer Zertifizierungsstelle signierten Zertifikat fehl, jedoch nicht mit einem selbst signierten?

Die OpenSSL-Verifizierung schlägt mit einem von einer Zertifizierungsstelle signierten Zertifikat fehl, jedoch nicht mit einem selbst signierten?

Zunächst einmal weiß ich, dass es viele damit zusammenhängende Fragen gibt, aber es scheint, dass die meisten davon auf das Fehlen von Ausstellerzertifikaten auf dem Server zurückzuführen sind.

Ich habe verfolgtdieser Leitfadenum die Client-Authentifizierung mit SSL zu aktivieren, aber ich komme nicht weiter damit, Apache dazu zu bringen, das Client-Zertifikat zu akzeptieren. Bei näherer Betrachtung sind die Apache-Protokolle voller Certificate Verification: Error (20): unable to get local issuer certificateNachrichten.

Ich verwende ein Zertifikat, das mir eine Zertifizierungsstelle ausgestellt hat, und meinen privaten Schlüssel als Zertifizierungsstelle.

Um das Problem weiter zu diagnostizieren, habe ich es ausgeführt openssl verify -CAfile ca.cert client_signed.crtund denselben Fehler erhalten.

Ich entscheide mich, alle Schritte zu wiederholen. Wenn ich jedoch alles über die Befehlszeile ausführe, wird immer noch derselbe Fehler zurückgegeben.

$ openssl x509 -req -days 360 -in client.csr -CA ca.cert -CAkey ca.key -CAcreateserial -out client_signed.crt
Signature ok
subject= ...
Getting CA Private Key
Enter pass phrase for server.key:
[I type in the password and press ENTER]
$ openssl verify -CAfile ca.cert client_signed.crt
[ .. ]
error 20 at 0 depth lookup:unable to get local issuer certificate
$ ls ca.cert
ca.cert

Um das Problem vollständig zu diagnostizieren, entscheide ich mich, ein Zertifikat zu generieren und selbst zu signieren, das als Zertifizierungsstelle verwendet werden soll, um das Client-Zertifikat zu signieren. Zu meiner Überraschungdas hat einwandfrei geklappt. Dies ist eigentlich der erste Schritt im Tutorial, das ich verlinkt habe.

Das Problem hängt also offensichtlich mit meinem Zertifikat zusammen. Ich vermute, dass es etwas mit der Vertrauenskette zu tun haben muss, da ich das Zertifikat der Zertifizierungsstelle, die mein eigenes Zertifikat signiert hat, nicht habe. Ich habe versucht, sie herunterzuladenvon ihrer Websiteaber ich kann nicht einmal mein eigenes Zertifikat verifizieren.

$ ls /path/to/downloaded/files/
acrn.cer  ancca.crt  CorreoUruguayoCA.crt  CorreoUruguayoRootCA.crt
$ openssl verify -CApath /path/to/downloaded/files/ my.cert
error 20 at 0 depth lookup:unable to get local issuer certificate

Jede Hilfe wird sehr geschätzt.

Bearbeiten: Die Verwendung des Dienstprogramms „Datei anzeigen“ unter Ubuntu zeigt an, dass mein Zertifikat überprüft wurde Verified by: Correo Uruguayo - CA. Ich bin nicht sicher, warum OpenSSL es nicht überprüfen kann.

verwandte Informationen