«1. Обзор

KeyStore, как следует из названия, представляет собой хранилище сертификатов, открытых и закрытых ключей. Более того, дистрибутивы JDK поставляются с исполняемым файлом для управления ими — keytool.

С другой стороны, сертификаты могут иметь множество расширений, но нужно помнить, что файл .cer содержит общедоступные ключи X.509 и поэтому может использоваться только для проверки личности.

В этой короткой статье мы рассмотрим, как импортировать файл .cer в хранилище ключей Java.

2. Импорт сертификата

Без лишних слов давайте теперь импортируем файл общедоступного сертификата Baeldung в образец KeyStore.

У keytool есть много опций, но нас интересует importcert, который так же прост, как и его название. Так как внутри KeyStore обычно есть разные записи, нам придется использовать аргумент псевдонима, чтобы присвоить ему уникальное имя:

> keytool -importcert -alias baeldung_public_cert -file baeldung.cer -keystore sample_keystore
> Enter keystore password:
...
> Trust this certificate? [no]:  y
> Certificate was added to keystore

Хотя команда запрашивает пароль и подтверждение, мы можем обойти их, добавив storepass и noprompt аргументы. Это особенно удобно при запуске keytool из скрипта:

> keytool -importcert -alias baeldung_public_cert -file baeldung.cer -keystore sample_keystore -storepass pass123 -noprompt
> Certificate was added to keystore

Кроме того, если хранилище ключей не существует, оно будет создано автоматически. В этом случае мы можем установить формат через аргумент storetype. Если не указано, формат KeyStore по умолчанию JKS, если мы используем Java 8 или более раннюю версию. Начиная с Java 9 по умолчанию используется PKCS12:

> keytool -importcert -alias baeldung_public_cert -file baeldung.cer -keystore sample_keystore -storetype PKCS12
> Enter keystore password:
> Re-enter new password:
...
> Trust this certificate? [no]: y
> Certificate was added to keystore

Здесь мы создали хранилище ключей PKCS12. Основное различие между JKS и PKCS12 заключается в том, что JKS — это формат, специфичный для Java, а PKCS12 — это стандартизированный способ хранения ключей и сертификатов

В случае необходимости мы также можем выполнять эти операции программно.

3. Заключение

В этом руководстве мы рассмотрели, как импортировать файл .cer в хранилище ключей. Для этого мы использовали опцию importcert keytool.