Інструмент 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 для підтримки оптимальної роботи системи.