SSL-Root-CA-Zertifikat wird nicht erkannt, obwohl es im Trust Store vorhanden ist. Warum?

SSL-Root-CA-Zertifikat wird nicht erkannt, obwohl es im Trust Store vorhanden ist. Warum?

Hintergrund:

  • Ubuntu Server 14.10 64-Bit auf aws.amazon.com/ec2
  • Günstiges PositiveSSL-Serverzertifikat von COMODO
  • 1 Server-Zertifikat, 2 Intermediate-CA-Zertifikate und 1 Root-CA-Zertifikat als ZIP-Archiv von COMODO
  • Citadels WebCit httpsd

Problem:

Die zusammengesetzte Zertifikatskette scheint korrekt zu sein, aber die Überprüfung schlägt fehl.

openssl s_client myhost:port

zeigt, dass die Zertifikatskette und die Paare aus Aussteller und Zertifikatsinhaber in der Kette korrekt angeordnet sind, aber:

verify error:num=19:self signed certificate in certificate chain

Das Stamm-CA-Zertifikat wird von OpenSSL nicht akzeptiert, obwohl es standardmäßig im Vertrauensspeicher des Ubuntu-Servers gefunden wird.

Konkret: AddTrustExternalCARoot.crtPer E-Mail von COMODO erhalten und /etc/ssl/certs/AddTrust_External_Root.pemdie Links dazu /usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt sind identisch.

Was ist hier falsch?

Antwort1

OpenSSL hat zumindest bis zur aktuellen Version (1.0.2a) eineInsektwo s_clientohne -CA{path,file}Argumentverwendet nicht den Standard-Truststorewie es sollte, und kann daher Zertifikate, die gemäß diesem Truststore gültig sind, nicht überprüfen. (Auch s_serverund s_time, aber bei diesen kümmert man sich selten um die Überprüfung.) Siehehttps://serverfault.com/questions/607233/how-to-make-openssl-s-client-using-default-ca. Ein Fix wird in dev angekündigt, aber es kann einige Zeit dauern, bis er veröffentlicht und verteilt wird. In der Zwischenzeit müssen Sie die -CA*Argumente explizit angeben. Beachten Sie, dass openssl verifydieser Fehler nicht vorliegt und das Zertifikat/die Kette daher korrekt als gültig gemeldet wurde.

AKTUALISIERUNG26.08.2015:Fix wurde veröffentlicht12.06.2015 in 1.0.1o und 1.0.2c. Außerdem habe ich bei der Untersuchung eines anderen Themas festgestellt, dassRedHat-Pakete waren möglicherweise in Ordnung. Genauer gesagt openssl-1.0.1e-30.el6.11enthält das CentOS-Quell-RPM, von dem ich weiß, dass es sich um eine Kopie des RedHat-RPM handelt (was ich aber nicht einfach bestätigen kann), openssl-1.0.1c-default-paths.patchÄnderungen s_client.c s_server.c s_time.cvom 06.12.2012, die den Upstream-Fixes vom 12.06.2015 entsprechen (obwohl sie inhaltlich nicht identisch sind). Vorausgesetzt, dieser Patch wurde in RedHat- und CentOS-Paketen angewendet, was ich nicht einfach überprüfen kann, würden sie wie erwartet funktionieren.

Antwort2

Ich hatte kürzlich ein ähnliches Problem mit Comodo-Zertifikaten, als ich ein Skript mit Ruby entwickelte. Letztendlich lag es daran, dass OpenSSL es nicht im Speicher hatte, obwohl es so aussah.

Um dies zu testen, laden Sie alle Comodo-Zwischenzertifikate herunter und erstellen Sie ein Zertifikatspaket, das etwa so aussieht (Sie müssen je nach heruntergeladenem Zertifikat unterschiedliche Zertifikatsnamen verwenden):

cat EssentialSSLCA_2.crt ComodoUTNSGCCA.crt UTNAddTrustSGCCA.crt AddTrustExternalCARoot.crt > yourDomain.ca-bundle

Comodo bietet hierzu einen Artikel an.

Versuchen Sie anschließend, das Zertifikat erneut mit OpenSSL zu verifizieren und den Zertifikatsspeicher in der Befehlszeile anzugeben:

openssl verify -untrusted yourDomain.ca-bundle cert.pem

Dieses Beispiel wurde übernommen vondieser Unix- und Linux-StackExchange-Artikel.

Sobald Sie ermittelt haben, um welches Zertifikat es sich handelt, sollte es möglich sein, das Zertifikat zum lokalen Zertifikatspeicher hinzuzufügen.was hier für Ubuntu ausführlich beschrieben wirdund lautet etwa:

Erstellen Sie ein Verzeichnis für zusätzliche CA-Zertifikate in /usr/share/ca-certificates

sudo mkdir /usr/share/ca-certificates/extra

Kopieren Sie die Datei '.crt' in das Verzeichnis

sudo cp foo.crt /usr/share/ca-certificates/extra/foo.crt

Lassen Sie Ubuntu den Pfad der '.crt'-Datei relativ zu /usr/share/ca-certificates zu /etc/ca-certificates.conf hinzufügen

sudo dpkg-reconfigure ca-certificates

Antwort3

Dem Comodo-Stammzertifikat wird nicht mehr vertraut. Wenn Sie den Grund nicht kennen, googeln Sie nach „von Comodo gestohlenes Zertifikat“.

Ein Comodo-Zertifikat mag zwar günstig sein, sein Wert ist jedoch weitaus geringer als sein Preis: Es ist praktisch wertlos, die Vertrauenskette ist unterbrochen.

verwandte Informationen