Все мы знаем, что Java -- это удобно и приятно.
Для хранения ключей и сертификатов Java использует специальное хранилище, которое по сути своей является бинарным файлом. Обычно этот файл называется keystore.jks для хранения сертификатов пользователя и ключей или truststore.jks для хранения доверенных сертификатов.
Управляется всё это добро при помощи специальной утилиты keytool, основные операции с которой я и опишу в данной статье.
1. Создание хранилищ, ключей и CSR
Создание Java keystore и пары ключей.
keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -storepass password
Создание CSR для существующего alias'а
keytool -certreq -alias mydomain -keystore keystore.jks -storepass password -file mydomain.csr
Создание keystore и самоподписанного сертификата
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360
2. Импортирование сертификатов
Импортирование корневого или промежуточного сертификата
keytool -import -trustcacerts -alias root -file CA.crt -keystore keystore.jks -storepass password
Импортирование подписанного сертификата пользователя в существующее хранилище
keytool -import -trustcacerts -alias mydomain -file mydomain.crt -keystore keystore.jks -storepass password
3. Экспортирование сертификатов
keytool -export -alias mydomain -file mydomain.crt -keystore keystore.jks -storepass password
4. Простмотр данных о сертификате или хранилища
Просмотр данных об отдельном сертификате
keytool -printcert -v -file mydomain.crt
Вывести список сертификатов в хранилище
keytool -list -v -keystore keystore.jks -storepass password
Вывести данные о конкретном сертификате в хранилище
keytool -list -v -keystore keystore.jks -storepass password -alias mydomain
5. Удаление сертификатов из хранилища
keytool -delete -alias mydomain -keystore keystore.jks -storepass password
6. Изменение паролей
Изменение пароля хранилища
keytool -storepasswd -new new_storepass -keystore keystore.jks -storepass password
Изменение пароля приватного ключа
keytool -keypasswd -alias client -keypass old_password -new new_password -keystore client.jks -storepass password
Следует отметить, что это лишь список команд для основных типичных сценариев использования утилиты. Более подробно о keytool и keystore можно почитать в официальной документации на сайте Oracle.