1. Обзор
В этом коротком уроке мы познакомимся с командой keytool . Мы узнаем, как использовать keytool для создания нового сертификата и проверки информации для этого сертификата.
2. Что Такое ключевой инструмент?
Java включает в себя утилиту keytool в своих выпусках. Мы используем его для управления ключами и сертификатами и хранения их в хранилище ключей. Команда keytool позволяет нам создавать самозаверяющие сертификаты и показывать информацию о хранилище ключей.
В следующих разделах мы рассмотрим различные функции этой утилиты.
3. Создание самозаверяющего сертификата
Прежде всего, давайте создадим самозаверяющий сертификат, который можно было бы использовать, например, для установления безопасной связи между проектами в нашей среде разработки.
Чтобы сгенерировать сертификат , мы откроем строку командной строки и используем команду keytool с параметром -genkeypair :
keytool -genkeypair -alias-keypass -validity -storepass
Давайте подробнее рассмотрим каждый из этих параметров:
- alias – имя для нашего сертификата
- keypass – пароль сертификата. Нам понадобится этот пароль, чтобы получить доступ к закрытому ключу нашего сертификата
- срок действия – время (в днях) действия нашего сертификата
- storepass – пароль для хранилища ключей. Это будет пароль хранилища ключей, если хранилище не существует
Например, давайте создадим сертификат с именем “cert 1” , который имеет закрытый ключ “pass 123” и действителен в течение одного года. Мы также укажем “stpass123” в качестве пароля хранилища ключей:
keytool -genkeypair -alias cert1 -keypass pass123 -validity 365 -storepass stpass123
После выполнения команды он запросит некоторую информацию, которую нам нужно будет предоставить:
What is your first and last name? [Unknown]: Name What is the name of your organizational unit? [Unknown]: Unit What is the name of your organization? [Unknown]: Company What is the name of your City or Locality? [Unknown]: City What is the name of your State or Province? [Unknown]: State What is the two-letter country code for this unit? [Unknown]: US Is CN=Name, OU=Unit, O=Company, L=City, ST=State, C=US correct? [no]: yes
Как уже упоминалось, если мы раньше не создавали хранилище ключей, создание этого сертификата приведет к его автоматическому созданию.
Мы также могли бы выполнить опцию -genkeypair без параметров. Если мы не введем их в командной строке и они обязательны, нам будет предложено их ввести.
Обратите внимание, что обычно не рекомендуется указывать пароли ( -keypass или -storepass ) в командной строке в производственных средах .
4. Перечисление сертификатов в Хранилище ключей
Далее мы узнаем, как просматривать сертификаты , хранящиеся в нашем хранилище ключей. Для этого мы будем использовать опцию -list :
keytool -list -storepass
Вывод для выполненной команды покажет сертификат, который мы создали:
Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry cert1, 02-ago-2020, PrivateKeyEntry, Certificate fingerprint (SHA1): 0B:3F:98:2E:A4:F7:33:6E:C4:2E:29:72:A7:17:E0:F5:22:45:08:2F
Если мы хотим получить информацию для конкретного сертификата , нам просто нужно включить опцию -alias в нашу команду. Чтобы получить дополнительную информацию, чем предусмотрено по умолчанию, мы также добавим опцию -v (verbose):
keytool -list -v -alias-storepass
Это предоставит нам всю информацию, связанную с запрашиваемым сертификатом:
Alias name: cert1 Creation date: 02-ago-2020 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=Name, OU=Unit, O=Company, L=City, ST=State, C=US Issuer: CN=Name, OU=Unit, O=Company, L=City, ST=State, C=US Serial number: 11d34890 Valid from: Sun Aug 02 20:25:14 CEST 2020 until: Mon Aug 02 20:25:14 CEST 2021 Certificate fingerprints: MD5: 16:F8:9B:DF:2C:2F:31:F0:85:9C:70:C3:56:66:59:46 SHA1: 0B:3F:98:2E:A4:F7:33:6E:C4:2E:29:72:A7:17:E0:F5:22:45:08:2F SHA256: 8C:B0:39:9F:A4:43:E2:D1:57:4A:6A:97:E9:B1:51:38:82:0F:07:F6:9E:CE:A9:AB:2E:92:52:7A:7E:98:2D:CA Signature algorithm name: SHA256withDSA Subject Public Key Algorithm: 2048-bit DSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: A1 3E DD 9A FB C0 9F 5D B5 BE 2E EC E2 87 CD 45 .>.....].......E 0010: FE 0B D7 55 ...U ] ]
5. Другие Особенности
Помимо функций, которые мы уже видели, в этом инструменте есть много дополнительных функций.
Например, мы можем удалить сертификат , созданный из хранилища ключей:
keytool -delete -alias-storepass
Другой пример заключается в том, что мы даже сможем изменить псевдоним сертификата :
keytool -changealias -alias-destalias -keypass -storepass
Наконец, чтобы получить больше информации об инструменте, мы можем обратиться за помощью через командную строку:
keytool -help
6. Заключение
В этом кратком руководстве мы немного узнали об утилите keytool . Мы также научились использовать некоторые основные функции, включенные в этот инструмент.