Це досить просто, використовуючи jdk6 принаймні ...
bash $ keytool -keystore foo.jks -genkeypair -alias foo \
-назви 'CN = foo.example.com, L = Мельбурн, ST = Вікторія, C = AU'
Введіть пароль магазину:
Повторно введіть новий пароль:
Введіть ключовий пароль для
(ПОВЕРНУЙТЕ, якщо такий самий, як пароль зберігання ключів):
bash $ keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
Введіть пароль зберігання ключів: asdasd
Сертифікат:
Дані:
Версія: 3 (0x2)
Серійний номер: 1237334757 (0x49c03ae5)
Алгоритм підпису: dsaWithSHA1
Емітент: C = AU, ST = Вікторія, L = Мельбурн, CN = foo.example.com
Дійсність
Не раніше: 18 березня 00:05:57 2009 GMT
Не після: 16 червня 00:05:57 2009 GMT
Тема: C = AU, ST = Вікторія, L = Мельбурн, CN = foo.example.com
Інформація про публічний ключ:
Алгоритм відкритого ключа: dsaEncryption
Відкритий ключ DSA:
паб:
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
Введіть пароль зберігання ключів:
Повторно введіть новий пароль:
Введіть пароль зберігання джерела:
Запис для псевдоніму foo успішно імпортований.
Команда імпорту виконана: 1 імпорт успішно імпортовано, 0 записів не вдалося або скасовано
bash $ openssl pkcs12 -in foo.p12 -out foo.pem
Введіть пароль імпорту:
MAC підтверджено
Введіть пропускну фразу PEM:
Підтвердження - введіть пропускну фразу PEM:
bash $ openssl x509 -text -in foo.pem
Сертифікат:
Дані:
Версія: 3 (0x2)
Серійний номер: 1237334757 (0x49c03ae5)
Алгоритм підпису: dsaWithSHA1
Емітент: C = AU, ST = Вікторія, L = Мельбурн, CN = foo.example.com
Дійсність
Не раніше: 18 березня 00:05:57 2009 GMT
Не після: 16 червня 00:05:57 2009 GMT
Тема: C = AU, ST = Вікторія, L = Мельбурн, CN = foo.example.com
Інформація про публічний ключ:
Алгоритм відкритого ключа: dsaEncryption
Відкритий ключ DSA:
паб:
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
Введіть пропускну фразу PEM:
Закритий ключ (1024 біт)
приват:
00: 8f: b1: af: 55: 63: 92: 7c: d2: 0f: e6: f3: a2: f5: ff:
1а: 7а: фе: 8с: 39: дд
паб:
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:
Ви закінчуєте:
- foo.jks - магазин брелоків у форматі java.
- foo.p12 - зберігання клавіш у форматі PKCS # 12.
- foo.pem - всі клавіші та символи від зберігання клавіш, у форматі PEM.
(Цей останній файл, якщо вам подобається, можна розділити на ключі та сертифікати.)
Підсумок команд - для створення сховища ключів JKS:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
Підсумок команд - перетворити сховище ключів JKS у сховище PKCS # 12, а потім у файл PEM:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
якщо у вашій сховищі ключів JKS є більше одного сертифіката, і ви хочете експортувати лише сертифікат і ключ, пов’язаний з одним із псевдонімів, ви можете використовувати таку варіацію:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
Підсумок команд - для порівняння зберігання ключів JKS з файлом 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