it-swarm.com.de

OpenSSL: Das erste Zertifikat für die Experian-URL konnte nicht überprüft werden

Ich versuche, eine SSL-Verbindung zu Experian in Ubuntu 10.10 mit dem OpenSSL-Client zu überprüfen.

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

Das Problem besteht darin, dass die Verbindung mit dem Rückgabecode Verify: 21 geschlossen wird (das erste Zertifikat kann nicht überprüft werden).

Ich habe die Zertifikatsliste überprüft und das zum Signieren von Experian verwendete Zertifikat (VeriSign Class 3 Secure Server CA-G3) ist in der Liste enthalten.

/etc/ssl/certs/ca-certificates.crt 

Ich weiß jedoch nicht, warum das erste Zertifikat nicht verifiziert werden kann. Danke im Voraus.

Die gesamte Antwort kann hier eingesehen werden: https://Gist.github.com/124879

67
pdjota

Die erste Fehlermeldung informiert Sie über das Problem:

bestätigungsfehler: num = 20: Das Zertifikat des lokalen Ausstellers konnte nicht abgerufen werden

Die ausstellende Zertifizierungsstelle des Endentitätsserverzertifikats lautet

VeriSign Class 3 Secure Server CA-G3

Schauen Sie genau in Ihre CA-Datei - Sie werden nicht dieses Zertifikat finden, da es sich um eine zwischengeschaltete CA handelt - Sie haben festgestellt, dass es sich um eine ähnlich benannte öffentliche primäre G3-CA von VeriSign handelt.

Aber warum gelingt die andere Verbindung, diese jedoch nicht? Das Problem ist eine Fehlkonfiguration der Server (überzeugen Sie sich selbst mit der Option -debug). Der "gute" Server sendet während des Handshakes die gesamte Zertifikatskette und stellt Ihnen so die notwendigen Zwischenzertifikate zur Verfügung.

Der Server, der ausfällt, sendet Ihnen jedoch nur das Endentitätszertifikat, und OpenSSL kann das fehlende Zwischenzertifikat nicht "on the fly" herunterladen (was durch Interpretation der Authority Information Access-Erweiterung möglich wäre). . Daher schlägt Ihr Versuch mit s_client Fehl, aber er würde trotzdem erfolgreich sein, wenn Sie mit z. FireFox (unterstützt die Funktion "Zertifikaterkennung").

Sie können das Problem entweder auf der Serverseite beheben, indem Sie den Server veranlassen, auch die gesamte Kette zu senden, oder indem Sie das fehlende Zwischenzertifikat als clientseitigen Parameter an OpenSSL übergeben.

95
emboss

Hinzufügen zusätzlicher Informationen zur Antwort von emboss.

Einfach gesagt, es gibt ein falsches Zertifikat in Ihrer Zertifikatskette.

Zum Beispiel hat Ihnen Ihre Zertifizierungsstelle höchstwahrscheinlich 3 Dateien gegeben.

  • ihr_Domänenname.crt
  • DigiCertCA.crt # (oder wie auch immer der Name Ihrer Zertifizierungsstelle lautet)
  • TrustedRoot.crt

Sie haben höchstwahrscheinlich alle diese Dateien zu einem Bundle zusammengefasst.

-----BEGIN CERTIFICATE----- 
(Your Primary SSL certificate: your_domain_name.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Your Intermediate certificate: DigiCertCA.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Your Root certificate: TrustedRoot.crt) 
-----END CERTIFICATE-----

Wenn Sie das Bundle erstellen, aber eine alte oder eine falsche Version Ihres Intermediate Cert (in meinem Beispiel DigiCertCA.crt) verwenden, erhalten Sie die genauen Symptome, die Sie beschreiben.

Laden Sie alle Zertifikate von Ihrer Zertifizierungsstelle erneut herunter und erstellen Sie ein neues Bundle.

38
spuder

Bei der Installation meines signierten Zertifikats auf einer Amazon Elastic Load Balancer-Instanz ist das gleiche Problem aufgetreten.

Alle schienen über einen Browser (Chrome) gefunden worden zu sein, aber der Zugriff auf die Site über meinen Java client erzeugte die Ausnahme javax.net.ssl.SSLPeerUnverifiedException

Was ich nicht getan hatte, war eine "Zertifikatskette" -Datei bereitzustellen, wenn ich mein Zertifikat auf meiner ELB-Instanz installierte (siehe https://serverfault.com/questions/419432/install-ssl-on-Amazon-elastic-load) -balancer-with-godaddy-wildcard-certificate )

Wir haben nur unseren signierten öffentlichen Schlüssel von der Signaturstelle erhalten, daher musste ich meine eigene Zertifikatskettendatei erstellen. Mit dem Certificate Viewer-Fenster meines Browsers habe ich jedes Zertifikat in der Signierkette exportiert. (Die Reihenfolge der Zertifikatkette ist wichtig, siehe https://forums.aws.Amazon.com/message.jspa?messageID=222086 )

10
glidester