Перейти к основному содержимому

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

· 2 мин. чтения

1. Обзор

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

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

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

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

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

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

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

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

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

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

> keytool -importcert -alias foreach_public_cert -file foreach.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 .