17 прикладів команд Keytool, які слід знати системному адміністратору та розробнику

Інструмент Keytool: Керування Ключами та Сертифікатами

Keytool – це утиліта командного рядка, призначена для ефективного управління криптографічними ключами та сертифікатами. Вона надає широкий спектр можливостей для їх створення, збереження та модифікації.

Якщо на вашому комп’ютері встановлено Java, ви можете скористатися командою keytool для імпорту сертифікатів Центру сертифікації (ЦС), перегляду списків наявних сертифікатів, генерації самопідписаних сертифікатів, безпечного зберігання парольних фраз та пар відкритих/закритих ключів, а також для багатьох інших операцій.

Звучить складно? Не хвилюйтеся, далі я поясню це більш доступною мовою, тож ви швидко зрозумієте, як це працює.

Для наочності, у своїх прикладах я буду використовувати Linux, але ви також можете застосовувати ці команди в операційних системах Windows та macOS.

Що ж таке команда Keytool?

Keytool – це інструмент для управління ключами та сертифікатами. Він дозволяє зберігати пари закритих і відкритих ключів, які використовуються для автентифікації доступу до різних служб.

Зважаючи на специфіку статті, можна зробити висновок, що ця команда найчастіше використовується системними адміністраторами та розробниками.

Це дійсно так, але keytool може бути корисним і для звичайних користувачів. Наприклад, за його допомогою можна безпечно зберігати парольні фрази та секретні ключі для аутентифікації, шифрування та дешифрування даних. Тож, якщо ви цікавитеся безпекою, вам варто спробувати keytool на вашому комп’ютері.

Якщо ви тільки починаєте знайомство з концепцією криптографічних ключів, рекомендую ознайомитися зі статтею про шифрування даних, перш ніж переходити до команд keytool.

Також, варто розглянути приклади команд OpenSSL, щоб краще зрозуміти відмінності між цими двома інструментами та їх можливостями.

Створення Самопідписаного Сертифіката

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

На відміну від SSL-сертифікатів, які купуються у центрах сертифікації, самопідписані сертифікати використовуються для розробки та тестування в безпечному середовищі.

Ви можете створити такий сертифікат, скориставшись командою keytool із зазначеним синтаксисом. Ось приклад:

keytool -genkeypair -alias techukraine.net -keypass passforkeystore -validity 365 -storepass passforkeystore

Замість `techukraine.net` можна використати будь-яке ім’я для псевдоніма. Також можна налаштувати термін дії сертифіката (validity) і встановити пароль для сховища ключів, змінивши значення `passforkeystore`.

Слід зазначити, що для сховищ ключів PKCS12 підтримується лише один пароль. Однак це зручний і поширений формат, який не залежить від Java.

Якщо ж вам потрібно використовувати різні паролі для сховища ключів та сертифіката, можна явно вказати keytool використовувати інший інтерфейс.

Детальніше про це можна прочитати в офіційній документації.

Після виконання команди, вас попросять ввести додаткові дані для автентичності. Ось приклад запиту:

What is your first and last name?
  [Unknown]:  Ankush
What is the name of your organizational unit?
  [Unknown]:  techukraine.net
What is the name of your organization?
  [Unknown]:  techukraine.net
What is the name of your City or Locality?
  [Unknown]:  Bhubaneswar
What is the name of your State or Province?
  [Unknown]:  Odisha
What is the two-letter country code for this unit?
  [Unknown]:  91
Is CN=Ankush, OU=techukraine.net, O=techukraine.net, L=Bhubaneswar, ST=Odisha, C=91 correct?
  [no]:  yes

Створення Java Keystore та Пару Ключів

keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650

Створення Java Keystore та Імпорт Сертифіката

Переконайтеся, що у вас є дійсний сертифікат, який ви можете імпортувати в сховище ключів. Якщо сертифікат ще не створено, спочатку його потрібно згенерувати.

keytool -importcert -file test.crt -keystore truststore.jks -alias techukraine.net

Створення Пари Ключів в Сховище Ключів за Замовчуванням з Темою

Для швидкого створення пари ключів (наприклад, з псевдонімом “ca”), використайте наступну команду:

keytool -alias ca -dname CN=CA -genkeypair

Створення Ланцюжка Підписаних Сертифікатів

Припустимо, що ви створили дві пари ключів: ca та ca1. Ви можете створити ланцюжок, де ключ ca підписує сертифікат ca1, використовуючи такі команди:

keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert

Ви можете продовжити ланцюжок, додавши ще дві пари ключів ca1 та ca2, де ca1 підписуватиме ca2.

Імпорт Сертифіката

Для імпорту сертифіката з існуючого файлу, скористайтеся такою командою:

keystool -import -alias techukraine.net -file geekflareserver.cer

Створення Запиту на Підписання Сертифіката (CSR) для Існуючого Сховища Ключів

Якщо ви вже маєте сховище ключів, ви можете згенерувати CSR.

keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file techukraine.net.csr

Перегляд Списку Сертифікатів у Java Keystore

Сховище ключів може містити кілька сертифікатів. Для перегляду списку сертифікатів у сховищі `keystore.jks` використовуйте таку команду:

keytool -v -list -keystore keystore.jks

Результат виконання команди може виглядати так:

keytool -v -list -keystore keystore.jks
Enter keystore password:  
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 2 entries

Alias name: geekflarecert
Creation date: 16-Nov-2022
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Ankush, OU=Geek, O=techukraine.net, L=Bhubaneswar, ST=od, C=91
Issuer: CN=Ankush, OU=Geek, O=techukraine.net, L=Bhubaneswar, ST=od, C=91
Serial number: a0b9a99
Valid from: Wed Nov 16 09:42:37 IST 2022 until: Sat Nov 13 09:42:37 IST 2032
Certificate fingerprints:
	 SHA1: 23:7C:65:A7:A6:84:18:F8:45:04:92:DF:D4:BB:0F:91:6D:A5:C5:BE
	 SHA256: C0:25:ED:B8:CF:1A:E6:E1:C5:75:A8:10:8F:CD:BE:42:26:96:9C:9A:FA:74:65:07:71:06:9A:2C:F5:80:FE:7F
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

Перевірка Вмісту Окремого Сертифіката

Для детальної перевірки окремого сертифіката, скористайтеся такою командою:

keytool -v -printcert -file server.crt

Перегляд Сертифікатів у Java Keystore

Щоб отримати список усіх сертифікатів зі сховища, використайте команду:

keytool -v -list -keystore keystore.jks

Перегляд Сховища Ключів за Псевдонімом

Якщо потрібно перевірити вміст сховища за його псевдонімом, використайте наступну команду, вказавши ім’я вашого псевдоніма:

keytool -v -list -keystore keystore.jks -alias geekflareserver

Список Сертифікатів у KeyStore

Щоб перевірити сертифікати, що зберігаються у сховищі ключів за замовчуванням, скористайтеся командою:

keytool -list -storepass passforkeystore

Замініть `passforkeystore` на пароль від вашого сховища ключів.

Перегляд Інформації про Сертифікат

Щоб переглянути деталі окремого сертифіката, скористайтеся його псевдонімом:

keytool -list -v -alias techukraine.net -storepass passforkeystore

Перегляд Сертифіката у Форматі PEM

Для перевірки сертифіката у форматі PEM, використайте наступну команду:

keytool -v -printcert -file techukraine.net.crt -rfc

Зміна Пароля Java Keystore

Для зміни пароля сховища ключів, скористайтеся командою:

keytool -delete -alias techukraine.net -keystore keystore.jks

Видалення Сертифіката з Java Keystore

Для видалення сертифіката зі сховища, вкажіть сховище ключів та його псевдонім:

keytool -delete -alias techukraine.net -keystore keystore.jks

Дослідження Команди та Отримання Допомоги

Keytool має безліч аргументів та розширень для виконання різних завдань. Вам можуть знадобитися не всі, залежно від вашої задачі.

Для ознайомлення з параметрами команди, використайте:

keytool -help

У терміналі Linux, я рекомендую звернутися до сторінки man (manual) цієї команди:

man keytool

Команда man надає повну інформацію про команду keytool.

Зробіть це вашою суперсилою, щоб вивчити все про цей інструмент!

Підсумок

Шлях до файлів та інші параметри налаштування можуть відрізнятися залежно від платформи. Для стандартизованих параметрів, зверніться до документації Oracle.

Keytool – це потужний інструмент для різноманітних завдань. Спробуйте його можливості, щоб переконатися у його корисності!

Також ви можете вивчити інші команди Linux для підтримки оптимальної роботи системи.