Создание, импорт и экспорт ключей в Java keystore (keytool, openssl)

keystore

Это пост-памятка по созданию приватных и публичных ключей, сертификатов и подписей, а так же по работе с .

Предположим, что есть некий soap service который использует wsse (WS-Security, wss) для безопасности. Для того, чтобы в Java выполнять шифрование и подписи необходимо подготовить Java Key Store (JKS) файл.

Создание и импорт

Для начала создаем приватный ключ.

Далее нужен самоподписанный сертифика. По сути это публичный ключ.

Теперь можно создать авторизационный сертификат. Обычно его отправляют в сервис и в ответ получают публичный сертификат сервиса.

Теперь, когда у нас есть key.pem нужно поменять его формат

И в конечном итоге создать keystore с заполненными ключами.

Стоит отметить, что keystore создаст alias и password равные importkey если они не указаны.

Экпорт

Что делать, если спустя неокторое время оригинаьные ключи используемые в java keystore потерялись и надо их извлечь?

Для начала достанем публичный сертификат с помощью .

Теперь публичный серт. в файле exported-pem.crt.
Чтобы достать приватный ключ придется воспользоваться утилитой написанной на java.

В результате в файле exported-pkcs8.key лежит приватный ключ.