È abbastanza semplice, usando almeno jdk6 ...
bash $ keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN = foo.example.com, L = Melbourne, ST = Victoria, C = AU'
Inserisci la password del keystore:
Reinserire la nuova password:
Immettere la password chiave per
(INVIO se uguale alla password del keystore):
bash $ keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
Immettere la password del keystore: asdasd
Certificato:
Dati:
Versione: 3 (0x2)
Numero di serie: 1237334757 (0x49c03ae5)
Algoritmo della firma: dsaWithSHA1
Emittente: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Validità
Non prima: 18 marzo 00:05:57 2009 GMT
Non dopo: 16 giu 00:05:57 2009 GMT
Oggetto: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Informazioni sulla chiave pubblica dell'oggetto:
Algoritmo di chiave pubblica: dsaEncryption
Chiave pubblica DSA:
pub:
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
Inserisci la password del keystore di destinazione:
Reinserire la nuova password:
Immettere la password del keystore di origine:
Voce per alias foo importata correttamente.
Comando di importazione completato: 1 voce importata correttamente, 0 voci non riuscite o annullate
bash $ openssl pkcs12 -in foo.p12 -out foo.pem
Inserisci la password di importazione:
MAC verificato OK
Inserisci la passphrase PEM:
Verifica: inserire la passphrase PEM:
bash $ openssl x509 -text -in foo.pem
Certificato:
Dati:
Versione: 3 (0x2)
Numero di serie: 1237334757 (0x49c03ae5)
Algoritmo della firma: dsaWithSHA1
Emittente: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Validità
Non prima: 18 marzo 00:05:57 2009 GMT
Non dopo: 16 giu 00:05:57 2009 GMT
Oggetto: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Informazioni sulla chiave pubblica dell'oggetto:
Algoritmo di chiave pubblica: dsaEncryption
Chiave pubblica DSA:
pub:
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
leggere la chiave DSA
Inserisci la passphrase PEM:
Chiave privata: (1024 bit)
priv:
00: 8f: b1: AF: 55: 63: 92: 7 quater: d2: 0f: e6: f3: a2: f5: ff:
1a: 7a: fe: 8c: 39: dd
pub:
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:
Si finisce con:
- foo.jks - keystore in formato java.
- foo.p12 - keystore in formato PKCS # 12.
- foo.pem - tutte le chiavi e i certificati dal keystore, in formato PEM.
(Se lo desideri, quest'ultimo file può essere suddiviso in chiavi e certificati.)
Riepilogo comandi - per creare un keystore JKS:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
Riepilogo comandi - per convertire il keystore JKS nel keystore PKCS # 12, quindi nel file PEM:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
se si dispone di più certificati nel keystore JKS e si desidera esportare solo il certificato e la chiave associati a uno degli alias, è possibile utilizzare la seguente variante:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
Riepilogo comandi - per confrontare il keystore JKS con il file PEM:
keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
openssl x509 -text -in foo.pem
openssl dsa -text -in foo.pem