Jest to dość proste, używając przynajmniej jdk6 ...
bash $ keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN = foo.example.com, L = Melbourne, ST = Victoria, C = AU'
Wprowadź hasło do magazynu kluczy:
Wprowadź ponownie nowe hasło:
Wprowadź hasło klucza dla
(ZWRÓĆ, jeśli jest takie samo jak hasło do magazynu kluczy):
bash $ keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
Wprowadź hasło magazynu kluczy: asdasd
Certyfikat:
Dane:
Wersja: 3 (0x2)
Numer seryjny: 1237334757 (0x49c03ae5)
Algorytm podpisu: dsaWithSHA1
Wystawca: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Ważność
Nie wcześniej: 18 marca 00:05:57 2009 GMT
Nie po: 16 czerwca 00:05:57 2009 GMT
Temat: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Informacje o kluczu publicznym podmiotu:
Algorytm klucza publicznego: dsaEncryption
Klucz publiczny 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
Wprowadź hasło do docelowego magazynu kluczy:
Wprowadź ponownie nowe hasło:
Wprowadź hasło źródłowego magazynu kluczy:
Wpis dla aliasu foo został pomyślnie zaimportowany.
Polecenie importu zakończone: 1 wpisy pomyślnie zaimportowane, 0 wpisów nie powiodło się lub anulowano
bash $ openssl pkcs12 -in foo.p12 -out foo.pem
Wprowadź hasło importu:
MAC zweryfikowany OK
Wpisz hasło PEM:
Weryfikacja - wprowadź frazę hasła PEM:
bash $ openssl x509 -text -in foo.pem
Certyfikat:
Dane:
Wersja: 3 (0x2)
Numer seryjny: 1237334757 (0x49c03ae5)
Algorytm podpisu: dsaWithSHA1
Wystawca: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Ważność
Nie wcześniej: 18 marca 00:05:57 2009 GMT
Nie po: 16 czerwca 00:05:57 2009 GMT
Temat: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Informacje o kluczu publicznym podmiotu:
Algorytm klucza publicznego: dsaEncryption
Klucz publiczny 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
przeczytaj klucz DSA
Wpisz hasło PEM:
Klucz prywatny: (1024-bitowy)
priv:
00: 8f: b1: af: 55: 63: 92: 7c: 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:
Kończysz z:
- foo.jks - magazyn kluczy w formacie java.
- foo.p12 - magazyn kluczy w formacie PKCS # 12.
- foo.pem - wszystkie klucze i certyfikaty z magazynu kluczy, w formacie PEM.
(Ten ostatni plik można podzielić na klucze i certyfikaty, jeśli chcesz).
Podsumowanie poleceń - aby utworzyć magazyn kluczy JKS:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
Podsumowanie polecenia - aby przekonwertować magazyn kluczy JKS do magazynu kluczy PKCS # 12, a następnie do pliku PEM:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
jeśli masz więcej niż jeden certyfikat w swoim magazynie kluczy JKS i chcesz wyeksportować tylko certyfikat i klucz powiązany z jednym z aliasów, możesz użyć następującej odmiany:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
Podsumowanie polecenia - aby porównać magazyn kluczy JKS z plikiem 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