Перейти к основному содержимому

Введение в keytool

· 4 мин. чтения

1. Обзор

В этом коротком уроке мы познакомимся с командой keytool . Мы узнаем, как использовать keytool для создания нового сертификата и проверки информации для этого сертификата.

2. Что такое keytool?

Java включает утилиту keytool в свои выпуски. Мы используем его для управления ключами и сертификатами и хранения их в хранилище ключей. Команда keytool позволяет нам создавать самозаверяющие сертификаты и отображать информацию о хранилище ключей.

В следующих разделах мы рассмотрим различные функции этой утилиты.

3. Создание самозаверяющего сертификата

Прежде всего, давайте создадим самозаверяющий сертификат, который можно будет использовать, например, для установления безопасной связи между проектами в нашей среде разработки.

Чтобы сгенерировать сертификат , мы собираемся открыть приглашение командной строки и использовать команду keytool с параметром -genkeypair :

keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>

Давайте узнаем больше о каждом из этих параметров:

  • псевдоним — имя для нашего сертификата
  • keypass – пароль сертификата. Нам понадобится этот пароль, чтобы иметь доступ к закрытому ключу нашего сертификата.
  • действительность — время (в днях) действия нашего сертификата
  • storepass — пароль для хранилища ключей. Это будет пароль хранилища ключей, если хранилище не существует.

Например, давайте создадим сертификат с именем «cert1» , который имеет закрытый ключ «pass123» и действителен в течение одного года. Мы также укажем «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 <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 (подробный):

keytool -list -v -alias <alias> -storepass <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 <alias> -storepass <storepass>

Другой пример: мы даже сможем изменить псевдоним сертификата :

keytool -changealias -alias <alias> -destalias <new_alias> -keypass <keypass> -storepass <storepass>

Наконец, чтобы получить больше информации об инструменте, мы можем обратиться за помощью через командную строку:

keytool -help

6. Заключение

В этом кратком руководстве мы немного узнали об утилите keytool . Мы также научились использовать некоторые основные функции, включенные в этот инструмент.