Рубрики
Без рубрики

Введение в ключевой инструмент

Узнайте, как создавать сертификаты с помощью keytool.

Автор оригинала: baeldung.

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 . Мы также научились использовать некоторые основные функции, включенные в этот инструмент.