Selbstsigniertes Serverzertifikat herunterladen

Selbstsigniertes Serverzertifikat herunterladen

Zusammenfassung
Ich muss ein selbstsigniertes Zertifikat von einem Server herunterladen, um eine JKS-Datei zu erstellen, die ich als Truststore in einer Anwendung verwenden kann. Wie kann ich das von einem Red Hat-Server aus tun?

Was ich versucht habe
Ich habe versucht, das Zertifikat mit OpenSSL abzurufen:

echo -n | openssl s_client -connect hostname.example.com:20000 -showcerts | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > downloadedcerts.cert

Dies schlägt mit der folgenden Meldung fehl:

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

Tatsächlich ist das Stammzertifikat dieses ServersIstselbst signiert und nicht von einer Zertifizierungsstelle. Damit bin ich einverstanden – das Stammzertifikat gehört einer Regierungsbehörde in meinem Land –, aber OpenSSL stellt keine Verbindung her, um das Zertifikat herunterzuladen.

Es wäre einfach, die URL in Firefox zu laden, den Zertifikatsfehler manuell zu ignorieren und das Zertifikat herunterzuladen, aber aufgrund von Firewalls kann ich von meinem Desktop-Computer aus keine Verbindung zum Server herstellen.

Ich wäre für jede Hilfe sehr dankbar :)

Antwort1

Überprüfungsfehler: Num=19: selbst signiertes Zertifikat in der Zertifikatskette

Tatsächlich ist das Stammzertifikat dieses Servers selbst signiert und stammt nicht von einer Zertifizierungsstelle.

Es ist eine Zertifizierungsstelle, sie ist nur nicht vertrauenswürdig ;)

Im Gegensatz zu Browsern (die fast allem vertrauen) vertraut OpenSSL nichts (Sie müssen ihm sagen, was es vertrauen soll).


Laden Sie das CA-Zertifikat Ihres Landes herunter (normalerweisenichtin der Kette gesendet). Seinenichtin der Kette gesendet, da es sich um einen Vertrauenspunkt handelt. Sie müssen ihn bereits haben und ihm vertrauen.

Normalerweise finden Sie das CA-Zertifikat online. Zum Beispiel:Hierist DigiCerts,Hierist Verisign usw. Überprüfen Sie das heruntergeladene Zertifikat. Die Überprüfung ist der schwierige Teil - Browser lösen dies, indem sie ihre eigenen gebündelten, bereits überprüften Zertifikate mit sich herumtragen.

Platzieren Sie das CA-Zertifikat Ihres Landes in einer eigenen Datei. Verwenden Sie dann openssl s_client -connect hostname.example.com:20000 -CAfile my-country-ca.pem. wird mit oder ähnlich s_clientvervollständigt .Verify OK (0)

Antwort2

Ich würde empfehlen, eine eigene Zertifizierungsstelle zu erstellen [EDIT – nicht das, was gewollt war. Siehe nächsten Absatz]. Das ist eine ziemliche Plage und wenn man recherchiert, wie es geht, scheint es schwieriger zu sein, als es wirklich ist. Sie erfinden einfach ein fiktives Unternehmen, dessen Zertifikat Sie in Ihren Trusted Root der Clients einfügen und das die Zertifikate signieren kann, anstatt selbst signierte Zertifikate zu verwenden.

Ich habe in der Antwort von Bruno auf diese Frage hier eine Erklärung gefunden: https://stackoverflow.com/questions/4103472/ssl-handshake-fails-with-a-verisign-chain-certificate-that-contains-two-ca-s

Ich hatte nicht daran gedacht, dass ein Stammzertifikat selbstsigniert ist, aber es macht durchaus Sinn. Wenn ich das also richtig verstehe, erhalten Sie das gewünschte Zertifikat (das erste), aber auch alles andere in der Zertifikatskette. Das Stammzertifikat ist dasjenige, das die Meldung verursacht.

verwandte Informationen