Проверка файлов JKS (Java keystore)#
Данный документ содержит инструкции по проверке файлов Java keystore (JKS), используемых для Настройка TLS.
Java KeyStore (JKS) это набор утилит, которые являются частью инсталляции Java.
JSK позволяет создавать и управлять файлами keystore, которые содержат сертификаты и приватные ключи.
JKS поддерживает форматы PKCS #12 .p12
, а также файлы .jks
.
Файлы keystore всегда защищены паролем. Файл keystore может содержать один или несколько приватных ключей и сертификатов, каждый из которых имеет собственный псевдоним (alias).
Проверка keystore#
Убедитесь с помощью утилиты keytool
(является частью JDK), что полученный keystore файл содержит необходимые ключи:
keytool -list -v -keystore yourKeystore.jks
Вам потребуется ввести пароль keystore. Проанализируйте вывод данной команды:
Файл keystore может содержать приватный ключ (
Entry type: PrivateKeyEntry
), сертификат (Entry type: trustedCertEntry
) или и то, и другое.Большинство современных браузеров устанавливают максимальный срок валидности сертификата в 398 дня. Обратите внимание на параметры
Not Before
иNot After
в секцииValidity
. Если срок действия сертификата превышает предельное значение, браузеры могут выдать ошибку при получении такого сертификата.Многие современные браузеры и клиентские приложения требуют наличие поля Subject Alternative Name (SAN). Убедитесь, что это поле содержит DNS имя вашего сервера (например,
DNS:clustercoord.example.com
). Браузеры и клиентские приложения могут выдать ошибку при получении сертификата без SAN.Например:
SubjectAlternativeName [ DNSName: cluster.example.com ]
Следующие секции описывают дополнительные шаги, которые могут потребоваться в некоторых случаях.
Импорт PEM в keystore#
Иногда вам может потребоваться записать в файл keystore сертификат в формате PEM.
Это можно сделать с помощью следующей команды (см. дополнительные опции в документации keytool
):
keytool -trustcacerts -import -alias cluster -file localhost.pem -keystore localkeys.jks
Если указанный keystore файл существует, утилита потребует пароль keystore. Если keystore файл не существует, утилита потребует задать пароль для вновь создаваемого файла. После ввода пароля утилита покажет вам содержимое добавляемого ключа, и далее задаст вопрос:
Trust this certificate? [no]:
Введите yes
, чтобы добавить сертификат PEM в keystore.
Опция alias
задает произвольный псевдоним импортируемому приватному ключу или сертификату.
Keystore может содержать множество приватных ключей и сертификатов.
Проверка сертификатов в truststore#
Файлы truststore содержат список доверенных центров сертификации, которые могут быть использованы Java для проверки валидности приватных ключей,
а также список доверенных сертификатов.
Поставка Java обычно включает файл cacerts
, который является truststore по умолчанию.
В некоторых случаях вам может потребоваться альтернативный truststore.
Например, если сертификат был выдан IT-отделом вашей компании, он может полагаться на локальный центр сертификации вашей организации, который не включен в cacerts
.
В таком случае вы должны указать в конфигурации HTTP-сервера каталога путь к альтернативному файлу truststore.
Файлы truststore зашифрованы паролем, который необходимо указать в конфигурации:
server.https.truststore-path=/mnt/shared/certs/localcacerts
server.https.truststore-password=<truststore-password>
При использовании нестандартных truststore, клиентским приложениям может потребоваться дополнительная конфигурация.
Например, при конфигурировании утилиты командной строки вам потребуется задать опции --truststore-path
и --truststore-password-[file]
.
Для конфигурации других приложений обратитесь к администраторам вашей организации за дополнительными инструкциями.