Java jks keystore list

Основы Java Keytool: работа с Java Keystore

Java Keytool – это инструмент Java для управления ключами, сертификатами и хранилищами ключей. Java Keystore (или JKS) – это хранилище сертификатов открытых ключей и авторизации, которое часто используется приложениями на основе Java для шифрования, аутентификации и установки соединений HTTPS. Все его записи защищены паролем хранилища ключей. Запись хранилища ключей идентифицируется псевдонимом и содержит надежные ключи и сертификаты.

Данное руководство описывает использование команд keytool, очень полезных при работе с JKS. Также оно охватывает создание и редактирование хранилищ ключей Java для Java-приложений.

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

Данный раздел посвящен командам Java Keytool, которые создают пары ключей и сертификатов, а также импортируют сертификаты.

Создание ключей

Используйте этот метод для поддержки HTTPS (HTTP по TLS). В данном разделе показано, как создать новую пару ключей в новом или уже существующем хранилище ключей Java, которые могут быть использованы для создания запроса на подпись сертификата (CSR) или получения SSL-сертификата в центре сертификации.

Данная команда сгенерирует пару 2048-битных RSA-ключей под указанным псевдонимом (в данном случае это domain) в указанном файле хранилища (keystore.jks).

Читайте также:  Абсолютное позиционирование

keytool -genkeypair \
-alias domain \
-keyalg RSA \
-keystore keystore.jks

Если же заданного хранилища ключей не существует, оно будет создано после получения запрашиваемой информации (а именно пароля хранилища ключей, строки Distinguished Name (для закрытого ключа) и пароля закрытого ключа).

Создание CSR для существующего закрытого ключа

Чтобы сгенерировать запрос на подпись сертификата, который можно отправить в ЦС для получения надежного SSL-сертификата, следуйте данному разделу руководства. Для этого понадобятся уже существующее хранилище ключей и псевдоним.

Данная команда создаст CSR (domain.csr), подписанный закрытым ключом с псевдонимом domain в хранилище keystore.jks:

keytool -certreq \
-alias domain \
-file domain.csr \
-keystore keystore.jks

Введите пароль хранилища ключей, после чего запрос будет создан.

Импортирование подписанного/Root/промежуточного сертификата

В данном разделе показано, как импортировать сертификаты (например, подписанный ЦС сертификат) в хранилище ключей. Он должен соответствовать закрытому ключу с определенным псевдонимом. Также данную команду можно использовать для импортирования root или промежуточного сертификата, который может потребовать ЦС для завершения доверительной цепочки. Просто укажите уникальный псевдоним, (например, root вместо domain) и сертификат, который необходимо импортировать.

Следующая команда импортирует сертификат (domain.crt) в хранилище ключей (keystore.jks) под указанным псевдонимом (domain). Подписанный сертификат при импортировании должен соответствовать закрытому ключу с указанным псевдонимом:

keytool -importcert \
-trustcacerts -file domain.crt \
-alias domain \
-keystore keystore.jks

На данном этапе будет предложено ввести пароль хранилища ключей, а затем подтвердить импортирование.

Примечание: можно также использовать эту команду, чтобы импортировать сертификаты ЦС в Java truststore (хранилище доверенных сертификатов), которое, как правило, находится в $JAVA_HOME/jre/lib/security/cacerts, (предполагается, что JRE или JDK установлены в $JAVA_HOME).

Создание самоподписанного сертификата в новом/существующем хранилище

В данном разделе показано, как создать самоподписанный сертификат для приложения Java. На самом деле, для этого используется та же команда, что и для создания новой пары ключей, но с параметром days, задающим срок действия сертификата.

Итак, данная команда создаст пару 2048-битных RSA-ключей, действительных на протяжении 365 дней, с указанным псевдонимом (domain) в заданном файле ключей (keystore.jks):

keytool -genkey \
-alias domain \
-keyalg RSA \
-validity 365 \
-keystore keystore.jks

Если заданного хранилища ключей не существует, команда создаст его, получив необходимые данные (это пароль хранилища, Distinguished Name (дл закрытого ключа) и пароль закрытого ключа).

Просмотр записей хранилища ключей

В данном разделе речь пойдет о содержимом Java Keystore, а именно о просмотре информации сертификата и экспортировании сертификатов.

Проверка контрольной суммы сертификата

Данная команда выводит список контрольных сумм всех сертификатов хранилища (keystore.jks) с соответствующими псевдонимами.

keytool -list \
-keystore keystore.jks

При этом будет запрошен пароль хранилища. Кроме того, можно ограничить вывод до определенного псевдонима с помощью опции -alias domain (где domain – нужный псевдоним).

Подробное содержание хранилища

Данная команда выведет подробную информацию о записях, находящихся в хранилище keystore.jks, в том числе длину цепи сертификата, контрольных сумм сертификатов в цепочке, имена (distinguished name), серийные номера, а также дату создания и срок дейтвия по псевдонимам:

keytool -list -v \
-keystore keystore.jks

На данном этапе нужно ввести пароль хранилища ключей. Опять же, с помощью опции -alias domain (где domain – это псевдоним) можно ограничить вывод до определенного псевдонима.

Примечание: также эту команду можно использовать, чтобы просмотреть сертификаты в хранилище доверенных сертификатов Java (как правило, оно находится в $JAVA_HOME/jre/lib/security/cacerts, если JRE или JDK установлены в $JAVA_HOME).

Использование Keytool для просмотра информации о сертификате

Данная команда выведет подробную информацию о файле сертификата (certificate.crt), в том числе контрольную сумму, distinguished name владельца и срок его действия:

keytool -printcert \
-file domain.crt

При этом нужно ввести пароль хранилища.

Экспортирование сертификатов

Данная команда экспортирует бинарный DER-зашифрованный сертификат (domain.der) с псевдонимом (domain) в хранилище (keystore.jks):

keytool -exportcert
-alias domain
-file domain.der
-keystore keystore.jks

Укажите пароль хранилища ключей.

Редактирование хранилища ключей

Данный раздел охватывает редактирование записей Java Keystore (например, удаление и изменение псевдонимов).

Изменение пароля хранилища

При помощи этой команды можно изменить пароль хранилища (keystore.jks):

keytool -storepasswd \
-keystore keystore.jks

Укажите текущий пароль хранилища ключей, а затем новый пароль. Задать новый пароль можно и при помощи самой команды, внеся в нее опцию -new newpass, где newpass – новый пароль.

Удаление псевдонима

Данная команда удалит псевдоним domain из хранилища keystore.jks:

keytool -delete \
-alias domain \
-keystore keystore.jks

Изменение псевдонима

При помощи данной команды можно изменить псевдоним (например, domain на newdomain):

keytool -changealias \
-alias domain \
-destalias newdomain \
-keystore keystore.jks

Итоги

Данное руководство описывает большинство операций, которые выполняются при управлении Java Keystores. Конечно, охватить все функции в одной статье невозможно. Но зная базовые команды, можно самостоятельно поэкспериментировать с управлением хранилищами.

Данное руководство основано на версии хранилища ключей, которое поставляется с Java 1.7.0. чтобы установить Java, читайте данную статью.

Источник

Java jks keystore list

Printable Version

Common Java Keytool Commands

Solution

Introduction

Keytool is a certificate management utility included with Java. It allows users to create a single store, called a keystore, that can hold multiple certificates within it. This file can then be assigned or installed to a server and used for SSL/TLS connections. Java Keystore files associate each certificate with a unique alias. Think of a keystore file like a lunch box. A lunch box, although thought of as single item, a ‘box’, can contain multiple items inside of it that serve different functions. Although it comprises of several components, what you end up taking to work is the entire lunchbox:

My Lunchbox
Alias = Sandwich Alias = Drink Alias = Snack

If you apply this logic to a keystore file, your ‘lunchbox’ is the keystore.jks file. The ‘sandwich’, ‘drink’ and ‘snack’ are all different certificates (held within Aliases) that make up the entire file.

keystore.jks
Alias = Root Alias = Intermediate Alias = Server

Keystore files can have a file extension of *.jks or *.keystore. *.jks is more commonly used. This file type is used on a number of servers; typically servers that use Java.

Creating a Keystore File

This section will take you through the most basic way to get your SSL certificate installed using Keytool.

Note: Data in the command line within [ ] need to be replaced with information specific to your installation and situation (also ensuring that you replace the [ ]). A example would be -keystore [Common Name].jks would need to be replaced to -keystore myserver.local.jks (or whatever your Common Name may be). First, you will need to create a new keystore file (called [Common Name].jks) with a private key:

keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore [Common Name].jks -dname «CN=[Common Name], OU=[organisationunit], O=[organisation], L=[town/city], ST=[state/province], C=[GB]»

Note: Ensure that you take note of the alias in this command. The one we use above is «server». In the final step, you must install your certificate on top of this alias name. If you decided to change the alias name from the one used above, then you will need to ensure you make the same change going forward. Next, you are going to create a CSR from this private key and keystore: keytool -certreq -alias server -file [Common Name].csr -keystore [Common Name].jks Give this [Common Name].csr file to TrustLink to request a certificate. In the meantime while you are waiting for a certificate, you can install the root and intermediate files. Install the Root certificate into an alias called Root:

keytool -import -alias Root -trustcacerts -file [qvrca2].cer -keystore [Common Name].jks Install the Intermediate certificate into an alias called Intermediate (or Int for short):

keytool -import -alias Intermediate -trustcacerts -file [evsslicag2].cer -keystore [Common Name].jks Once you have received your certificate file back from QuoVadis, you can install it into the Keystore. Install the certificate into your keystore:

keytool -import -alias server -file [My Certificate].crt -keystore [Common Name].jks You should now be able to take your JKS file and install it into the application or server that you are using.

Listing a Keystore File

Another useful command to know is to list out the contents of a keystore file. If something doesn’t quite work right or you may have made a mistake in your commands, a list command can help you troubleshoot where you may have went wrong. This command can be run by:

keytool -list -v -keystore Java jks keystore list.jks

CACERTS Keystore

Java comes with a predefined list of trusted certificates which is stored in the cacerts keystore. QuoVadis has been trusted in this list as of JRE v6 Update15 (or JDK 1.6.0_15). You can list the contents of your cacerts keystore with the following command:

keytool –list –v –keystore $JAVA_HOME/jre/lib/security/cacerts If you need to add a Root certificate to this file so that Java can trust it, you can run the following command:

keytool –import –trustcacerts –file [path\to\ca.crt] –alias [alias] –keystore $JAVA_HOME/jre/lib/security/cacerts
Note: For these commands, the path may be different depending on where Java is installed.

Deleting an Alias

If you have messed something up within your keystore, all is not lost. You can delete an alias (and any certificates within that alias) with the following command:

keytool -delete -alias [alias] -keystore Java jks keystore list.jks

Changing a Java Keystore Password

This command will let you change the password to a Java Keystore file (you will need the original password):

keytool -storepasswd -new [NewPassword] -keystore Java jks keystore list.jks

Exporting a Certificate From a Keystore

Use this command to export a certificate from an alias within a keystore file:

keytool -export -alias [alias] -file [filename].crt -keystore Java jks keystore list.jks

Exporting a PKCS#12 (*.p12 or *.pfx) file from a Keystore

You are able to export a PKCS#12 file from a Keystore. This can be helpful if you are migrating from a Java based server where a Keystore is needed to another server type (such as Windows) without the need to generate a new certificate. You will need a full keystore (with private key and public key) in order to do this:

keytool -importkeystore -srckeystore Java jks keystore list.jks -destkeystore [filename].p12 -deststoretype PKCS12

Источник

Оцените статью