Проверка файлов 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
    ]
    

После того, как вы убедились в корректности сертификата, установите его на координатор CedrusData согласно документации Установка сертификата и Конфигурация координатора.

Следующие секции описывают дополнительные шаги, которые могут потребоваться в некоторых случаях.

Импорт 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. В таком случае вам может потребоваться указать в конфигурации координатора config.properties путь к альтернативному файлу truststore. Файлы truststore зашифрованы паролем, который так же необходимо указать в конфигурации. Например:

http-server.https.truststore.path=/mnt/shared/certs/localcacerts
http-server.https.truststore.key=<truststore-password>

При использовании нестандартных truststore, клиентским приложениям может потребоваться дополнительная конфигурация.

Так, для конфигурации JDBC драйвера Trino, вам может потребоваться использовать параметры SSLTrustStorePath, SSLTrustStorePassword, SSLTrustStoreType или SSLUseSystemTrustStore. Для отключения проверки сертификатов используйте параметр SSLVerification=NONE (только для тестирования).

Для конфигурации Trino CLI используйте опции --truststore-path, --truststore-password, --truststore-type и --use-system-truststore. Для отключения проверки сертификатов используйте параметр --insecure (только для тестирования)

Для конфигурации других приложений обратитесь к администраторам вашей организации за дополнительными инструкциями.