Es ist ziemlich einfach, zumindest mit jdk6 ...
bash $ keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN = foo.example.com, L = Melbourne, ST = Victoria, C = AU'
Geben Sie das Keystore-Passwort ein:
Neues Passwort erneut eingeben:
Geben Sie das Schlüsselkennwort für ein
(RETURN, wenn es mit dem Keystore-Passwort identisch ist):
bash $ keytool -keystore foo.jks -exportcert -alias foo | \.
openssl x509 -inform der -text
Geben Sie das Keystore-Passwort ein: asdasd
Zertifikat:
Daten:
Version: 3 (0x2)
Seriennummer: 1237334757 (0x49c03ae5)
Signaturalgorithmus: dsaWithSHA1
Emittent: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Gültigkeit
Nicht vorher: 18. März 00:05:57 2009 GMT
Nicht danach: 16. Juni 00:05:57 2009 GMT
Betreff: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Betreff Public Key Info:
Public-Key-Algorithmus: dsaEncryption
Öffentlicher DSA-Schlüssel:
Kneipe:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
bash $ keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
Geben Sie das Passwort für den Zielschlüsselspeicher ein:
Neues Passwort erneut eingeben:
Geben Sie das Passwort für den Quell-Keystore ein:
Eintrag für Alias foo erfolgreich importiert.
Importbefehl abgeschlossen: 1 Einträge erfolgreich importiert, 0 Einträge fehlgeschlagen oder abgebrochen
bash $ openssl pkcs12 -in foo.p12 -out foo.pem
Importkennwort eingeben:
MAC verifiziert OK
Geben Sie die PEM-Passphrase ein:
Überprüfen - Geben Sie die PEM-Passphrase ein:
bash $ openssl x509 -text -in foo.pem
Zertifikat:
Daten:
Version: 3 (0x2)
Seriennummer: 1237334757 (0x49c03ae5)
Signaturalgorithmus: dsaWithSHA1
Emittent: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Gültigkeit
Nicht vorher: 18. März 00:05:57 2009 GMT
Nicht danach: 16. Juni 00:05:57 2009 GMT
Betreff: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Betreff Public Key Info:
Public-Key-Algorithmus: dsaEncryption
Öffentlicher DSA-Schlüssel:
Kneipe:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
bash $ openssl dsa -text -in foo.pem
DSA-Schlüssel lesen
Geben Sie die PEM-Passphrase ein:
Privater Schlüssel: (1024 Bit)
priv:
00: 8f: b1: af: 55: 63: 92: 7c: d2: 0f: e6: f3: a2: f5: ff:
1a: 7a: fe: 8c: 39: dd
Kneipe:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
Am Ende haben Sie:
- foo.jks - Keystore im Java-Format.
- foo.p12 - Keystore im PKCS # 12-Format.
- foo.pem - alle Schlüssel und Zertifikate aus dem Keystore im PEM-Format.
(Diese letzte Datei kann auf Wunsch in Schlüssel und Zertifikate aufgeteilt werden.)
Befehlsübersicht - um einen JKS-Keystore zu erstellen:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
Befehlsübersicht - Konvertieren des JKS-Keystores in den PKCS # 12-Keystore und anschließend in die PEM-Datei:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
Wenn Sie mehr als ein Zertifikat in Ihrem JKS-Keystore haben und nur das Zertifikat und den Schlüssel exportieren möchten, die einem der Aliase zugeordnet sind, können Sie die folgende Variante verwenden:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
Befehlsübersicht - um den JKS-Keystore mit der PEM-Datei zu vergleichen:
keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
openssl x509 -text -in foo.pem
openssl dsa -text -in foo.pem