Wie kann ich den privaten Schlüssel aus einer Zertifikatskette exportieren?

Wie kann ich den privaten Schlüssel aus einer Zertifikatskette exportieren?

Ich erstelle einen Schlüsselspeicher und erzeuge aus diesem Schlüsselspeicher eine CSR-Datei. Wenn ich ein signiertes Zertifikat von der Zertifizierungsstelle erhalte, importiere ich Stamm- und Zwischenzertifikate in meinen Schlüsselspeicher und schließlich mein signiertes Zertifikat. Nachdem ich das signierte Zertifikat hinzugefügt habe, erhalte ich die Antwort „Zertifikatsantwort wurde im Schlüsselspeicher installiert“. In diesem Format kann ich meinen Schlüsselspeicher in Tomcat verwenden. Für einen anderen Anwendungscontainer benötige ich jedoch nur einen privaten Schlüssel, der eine PEM-codierte Datei enthält. Und

keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs -srcstoretype JKS -deststoretype PKCS12

openssl pkcs12 -in server.pkcs -out server.pem

scheint nicht zu funktionieren. Ich erhalte eine PEM-Datei, die nur Zertifikatsinformationen, keinen privaten Schlüssel enthält.

Ist es also möglich, den privaten Schlüssel nach dem Erstellen einer Zertifikatskette zu exportieren? Und wenn ja, wie?

Antwort1

Der von Ihnen verwendete Befehl openssl pkcs12 sollte auch den privaten Schlüssel exportieren

openssl pkcs12 -in server.pkcs -out server.pem

Ich vermute, dass die P12-Eingabedatei den privaten Schlüssel nicht enthält.

Sind Sie sicher, dass beim Exportieren des Schlüssels aus der P12-Datei keine Warnung angezeigt wird?

Wichtig ist, dass JKS anscheinend ein separates Schlüsselkennwort und ein Speicherkennwort unterstützt. Beim Exportieren des p12 aus JKS kann es vorkommen, dass das Kennwort für das p12 sich von dem Kennwort für den Schlüssel unterscheidet. Dies wird anscheinend von OpenSSL nicht unterstützt (habe ich gerade ausprobiert) und führt zu einem „Fehlerhafte Entschlüsselung“-Fehler. Sie sollten sicherstellen, dass das Schlüsselkennwort mit dem p12-Kennwort identisch ist.

Antwort2

Den privaten Schlüssel aus einer Zertifikatskette exportierte ich nach folgenden Abfragen,

keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs 
-srcstoretype JKS -deststoretype PKCS12

openssl pkcs12 -in thekeystore.p12 -nocerts -nodes -out serverkey.pem

Der einzige Unterschied besteht also darin, -nodes -nocertsParameter hinzuzufügen, und es funktioniert wie am Schnürchen. Dies funktioniert auch für selbstsignierte Zertifikate.

verwandte Informationen