Вступление
Java Keytool - это инструмент управления ключами и сертификатами, который используется для управления Java Keystores и входит в состав Java. Java Keystore - это контейнер для сертификатов авторизации или сертификатов открытых ключей, который часто используется приложениями на основе Java для шифрования, аутентификации и обслуживания по HTTPS. Его записи защищены паролем хранилища ключей. Запись хранилища ключей идентифицируется alias и состоит из ключей и сертификатов, которые образуют цепочку доверия.
Это руководство по стилю шпаргалки содержит краткий справочник по командам + keytool +
, которые обычно полезны при работе с Java Keystores. Это включает в себя создание и модификацию Java Keystores, чтобы их можно было использовать с вашими Java-приложениями.
-
Как использовать это руководство: *
-
Если вы не знакомы с запросами на подпись сертификата (CSR), прочитайте раздел CSR нашего https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and -csrs / [шпаргалка OpenSSL]
-
Это руководство представлено в простом формате в виде шпаргалки - отдельные фрагменты командной строки
-
Перейдите к любому разделу, который имеет отношение к задаче, которую вы пытаетесь выполнить (подсказка: используйте меню Contents слева внизу или функцию Find вашего браузера)
-
Большинство команд являются однострочными, которые были расширены до нескольких строк (с помощью символа
+ \ +
) для ясности
Создание и импорт записей Keystore
В этом разделе рассматриваются команды Java Keytool, связанные с созданием пар ключей и сертификатов, а также с импортом сертификатов.
Генерация ключей в новом / существующем хранилище ключей
Используйте этот метод, если вы хотите использовать HTTP (HTTP поверх TLS) для защиты вашего Java-приложения. Это создаст новую пару ключей в новом или существующем хранилище ключей Java, которое можно использовать для создания CSR и получения сертификата SSL от центра сертификации.
Эта команда генерирует 2048-битную пару ключей RSA под указанным псевдонимом (+ domain +
) в указанном файле хранилища ключей (+ keystore.jks +
):
keytool -genkeypair \
-alias \
-keyalg RSA \
-keystore
Если указанное хранилище ключей еще не существует, оно будет создано после предоставления запрошенной информации. Будет запрошен пароль хранилища ключей (новый или существующий), затем приглашение «Отличительное имя» (для закрытого ключа), а затем требуемый пароль закрытого ключа.
Создать CSR для существующего закрытого ключа
Используйте этот метод, если вы хотите сгенерировать CSR, который вы можете отправить в CA для запроса на выдачу подписанного CA сертификата SSL. Это требует, чтобы хранилище ключей и псевдоним уже существовали; Вы можете использовать предыдущую команду, чтобы убедиться в этом.
Эта команда создает CSR (+ domain.csr +
), подписанный закрытым ключом, идентифицированным псевдонимом (+ domain +
) в хранилище ключей (+ keystore.jks +
):
keytool -certreq \
-alias \
-file \
-keystore
После ввода пароля хранилища ключей будет сгенерирован CSR.
Импорт подписанного / корневого / промежуточного сертификата
Используйте этот метод, если вы хотите импортировать подписанный сертификат, например, сертификат, подписанный ЦС, в ваше хранилище ключей; он должен соответствовать закрытому ключу, который существует в указанном псевдониме. Вы также можете использовать эту же команду для импорта сертификатов root или intermediate, которые могут потребоваться вашему ЦС для завершения цепочки доверия. Просто укажите уникальный псевдоним, например + root
вместо` + domain`, и сертификат, который вы хотите импортировать.
Эта команда импортирует сертификат (+ domain.crt +
) в хранилище ключей (+ keystore.jks +
) под указанным псевдонимом (+ domain +
). Если вы импортируете подписанный сертификат, он должен соответствовать закрытому ключу в указанном псевдониме:
keytool -importcert \
-trustcacerts -file \
-alias \
-keystore
Вам будет предложено ввести пароль хранилища ключей, а затем подтверждение действия импорта.
-
Примечание: * Вы также можете использовать команду для импорта сертификатов CA в ваше хранилище доверенных сертификатов Java, которое обычно находится в
+ $ JAVA_HOME / jre / lib / security / cacerts +
при условии, что+ $ JAVA_HOME +
находится там, где находятся ваши JRE или JDK. установлен.
Создать самоподписанный сертификат в новом / существующем хранилище ключей
Используйте эту команду, если вы хотите сгенерировать самоподписанный сертификат для ваших Java-приложений. На самом деле это та же команда, которая используется для создания новой пары ключей, но с сроком действия, указанным в днях.
Эта команда генерирует 2048-битную пару ключей RSA, действительную в течение + 365 +
дней, под указанным псевдонимом (+ domain +
) в указанном файле хранилища ключей (+ keystore.jks +
):
keytool -genkey \
-alias \
-keyalg RSA \
-validity \
-keystore
Если указанное хранилище ключей еще не существует, оно будет создано после предоставления запрошенной информации. Будет запрошен пароль хранилища ключей (новый или существующий), затем приглашение «Отличительное имя» (для закрытого ключа), а затем требуемый пароль закрытого ключа.
Просмотр записей в хранилище ключей
В этом разделе описан список содержимого хранилища ключей Java, например, просмотр информации о сертификате или экспорт сертификата.
Список ключей сертификата хранилища ключей
Эта команда перечисляет отпечатки SHA всех сертификатов в хранилище ключей (+ keystore.jks +
) под их соответствующими псевдонимами:
keytool -list \
-keystore
Вам будет предложено ввести пароль хранилища ключей. Вы также можете ограничить вывод определенным псевдонимом, используя опцию + -alias domain
, где« domain »- это псевдоним.
Содержимое списка подробных ключей
Эта команда выводит подробную информацию о записях, которые содержит хранилище ключей (+ keystore.jks +
), включая длину цепочки сертификатов, отпечаток сертификатов в цепочке, отличительные имена, серийный номер и дату создания / истечения срока действия, под соответствующими псевдонимами:
keytool -list -v \
-keystore
Вам будет предложено ввести пароль хранилища ключей. Вы также можете ограничить вывод определенным псевдонимом, используя опцию + -alias domain
, где« domain »- это псевдоним.
-
Примечание: * Вы также можете использовать эту команду, чтобы просмотреть, какие сертификаты находятся в вашем хранилище доверенных сертификатов Java, которое обычно находится в
+ $ JAVA_HOME / jre / lib / security / cacerts +
при условии, что+ $ JAVA_HOME +
находится там, где находятся ваши JRE или JDK. установлен.
Используйте Keytool для просмотра информации о сертификате
Эта команда выводит подробную информацию о файле сертификата (+ certificate.crt +
), включая его отпечатки пальцев, различающееся имя владельца и эмитента и период времени его действия:
keytool -printcert \
-file
Вам будет предложено ввести пароль хранилища ключей.
Экспортный сертификат
Эта команда экспортирует двоичный сертификат в кодировке DER (+ domain.der +
), связанный с псевдонимом (+ domain +
), в хранилище ключей (+ keystore.jks +
):
keytool -exportcert
-alias
-file
-keystore
Вам будет предложено ввести пароль хранилища ключей. Если вы хотите преобразовать DER-кодированный сертификат в PEM-кодировку, следуйте нашим https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs # convert-certificate-format [шпаргалка OpenSSL].
Модификация Keystore
В этом разделе описывается изменение записей хранилища ключей Java, например удаление или переименование псевдонимов.
Изменить пароль хранилища ключей
Эта команда используется для изменения пароля хранилища ключей (+ keystore.jks +
):
keytool -storepasswd \
-keystore
Вам будет предложено ввести текущий пароль, а затем новый пароль. Вы также можете указать новый пароль в команде, используя опцию + -new newpass +
, где «newpass» - пароль.
Удалить псевдоним
Эта команда используется для удаления псевдонима (+ domain
) в хранилище ключей (` + keystore.jks`):
keytool -delete \
-alias domain \
-keystore
Вам будет предложено ввести пароль хранилища ключей.
Переименовать псевдоним
Эта команда переименует псевдоним (+ domain +
) в псевдоним назначения (+ новый домен
) в хранилище ключей (` + keystore.jks`):
keytool -changealias \
-alias \
-destalias \
-keystore
Вам будет предложено ввести пароль хранилища ключей.
Заключение
Это должно охватывать то, как большинство людей используют Java Keytool для управления своими Java Keystores. У него много других применений, которые здесь не освещались, поэтому не стесняйтесь спрашивать или предлагать другие варианты использования в комментариях.
Это руководство основано на версии хранилища ключей, поставляемой с обновлением 65 Java 1.7.0. Чтобы получить помощь по установке Java в Ubuntu, следуйте th guide.