Keytool je nástroj pro práci s příkazovou řádkou, který umožňuje spravovat a uchovávat kryptografické klíče a certifikáty.
Pokud máte ve svém systému nainstalovanou Javu, můžete pomocí příkazu keytool importovat certifikáty certifikační autority (CA), zobrazovat certifikáty, generovat certifikáty s vlastním podpisem, ukládat přístupová hesla a veřejné i soukromé klíče, a také provádět další operace.
Zdá se vám to složité? Žádný strach, vše si objasníme postupně, srozumitelně.
Pro testování a ilustraci příkazů budu používat Linux, ale tyto příkazy jsou dostupné i pro operační systémy Windows a macOS.
Co je to příkaz Keytool?
Keytool je nástroj pro správu a uchovávání klíčů a certifikátů. Umožňuje ukládat páry soukromých a veřejných klíčů, které se obvykle využívají k ověřování a autentizaci přístupu ke službám.
Jak název článku napovídá, tento příkaz je primárně určen pro správce systémů a vývojáře.
To je sice pravda, nicméně i běžní uživatelé mohou kreativně využít příkaz keytool k ukládání přístupových hesel a tajných klíčů pro účely ověřování, šifrování a dešifrování. Pokud jste zvědaví, vyzkoušejte si jej ve svém systému.
Pokud jste nováčkem v oblasti kryptografických klíčů, doporučujeme vám nejprve si přečíst náš článek o šifrování dat. Poté se můžete s klidem pustit do zkoušení příkazů keytool.
Pro lepší pochopení rozdílů a možností vám také může pomoci prozkoumání příkladů příkazů OpenSSL.
Generování certifikátu s vlastním podpisem
keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>
Na rozdíl od SSL certifikátu, který si zakoupíte u certifikační autority, certifikát s vlastním podpisem se používá především pro účely vývoje a testování zabezpečeného připojení.
Můžete si ho vygenerovat pomocí výše uvedené syntaxe příkazu keytool. Například takto:
keytool -genkeypair -alias etechblog.cz -keypass passforkeystore -validity 365 -storepass passforkeystore
Pro alias můžete použít libovolné jméno, v tomto případě jako zástupný text používám „etechblog.cz“. Platnost certifikátu a heslo k úložišti klíčů (v tomto příkladu „passforkeystore“) si můžete upravit podle svých potřeb.
Pamatujte, že pro úložiště klíčů typu PKCS12 je podporováno pouze jedno heslo. Nicméně, jedná se o vhodný typ úložiště klíčů, který není specifický pouze pro platformu Java.
Pokud potřebujete dvě různá hesla pro úložiště klíčů a certifikát, je nutné explicitně příkazu keytool sdělit, aby použil odlišné rozhraní.
Více informací najdete v oficiální dokumentaci k nástroji keytool.
Po spuštění příkazu budete požádáni o zadání dalších informací pro ověření pravosti certifikátu. Zhruba to bude vypadat takto:
What is your first and last name? [Unknown]: Ankush What is the name of your organizational unit? [Unknown]: etechblog.cz What is the name of your organization? [Unknown]: etechblog.cz 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=etechblog.cz, O=etechblog.cz, L=Bhubaneswar, ST=Odisha, C=91 correct? [no]: yes
Vytvoření úložiště klíčů Java a páru klíčů
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650
Generování úložiště klíčů Java a import certifikátu
Ujistěte se, že máte platný certifikát, který jste si již vygenerovali. Po jeho získání ho můžete importovat a vygenerovat úložiště klíčů Java.
keytool -importcert -file test.crt -keystore truststore.jks -alias etechblog.cz
Vygenerování páru klíčů do výchozího úložiště klíčů s předmětem
Pomocí následujícího příkazu můžete rychle vygenerovat pár klíčů (například s názvem „ca“):
keytool -alias ca -dname CN=CA -genkeypair
Vytvoření řetězce podepsaných certifikátů
Předpokládejme, že jste si již vygenerovali páry klíčů ca a ca1. Nyní můžete vytvořit řetězec podepsaných certifikátů, kde ca podepíše ca1 pomocí následujících příkazů:
keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert
Řetězec můžete prodloužit o další dva páry klíčů ca1 a ca2, kde ca1 bude podepisovat ca2.
Import certifikátu
Chcete-li importovat certifikát z existujícího souboru, použijte následující příkaz:
keytool -import -alias etechblog.cz -file geekflareserver.cer
Vytvoření žádosti o podpis certifikátu (CSR) pro existující úložiště klíčů
Pokud jste již vytvořili úložiště klíčů, můžete pro něj vygenerovat CSR (Certificate Signing Request).
keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file etechblog.cz.csr
Zobrazení certifikátů uložených v úložišti klíčů Java
Úložiště klíčů může obsahovat více záznamů s certifikáty. Pokud chceme zobrazit seznam certifikátů v databázi „keystore.jks“, musíme zadat následující příkaz:
keytool -v -list -keystore keystore.jks
Výstup by mohl vypadat takto:
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=etechblog.cz, L=Bhubaneswar, ST=od, C=91 Issuer: CN=Ankush, OU=Geek, O=etechblog.cz, 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
Kontrola obsahu jednoho certifikátu
Pokud již máte vygenerovaný certifikát, můžete si o něm zobrazit více informací pomocí následujícího příkazu:
keytool -v -printcert -file server.crt
Zobrazení certifikátů v úložišti klíčů Java
Můžete vypsat všechny certifikáty z databáze úložiště klíčů. Příkaz vypadá takto:
keytool -v -list -keystore keystore.jks
Zobrazení úložiště klíčů pomocí aliasu a úložiště klíčů
Pokud chcete zkontrolovat konkrétní úložiště klíčů pomocí jeho aliasu, který jste nastavili při jeho vytváření, použijte následující příkaz:
keytool -v -list -keystore keystore.jks -alias geekflareserver
Výpis certifikátů v KeyStore
Pro zobrazení certifikátů uložených ve výchozím úložišti klíčů použijte tento příkaz:
keytool -list -storepass passforkeystore
Nezapomeňte „passforkeystore“ nahradit heslem, které jste nastavili.
Zobrazení informací o certifikátu
Pokud potřebujete zobrazit podrobnosti pouze jednoho konkrétního certifikátu, můžete použít jeho alias, aniž byste museli specifikovat celou databázi klíčového úložiště.
Příkaz vypadá takto:
keytool -list -v -alias etechblog.cz -storepass passforkeystore
Zobrazení certifikátu ve formátu PEM
PEM je jeden z nejběžnějších formátů pro certifikáty a kryptografické klíče. Pokud chcete zobrazit certifikát ve formátu PEM, zadejte následující příkaz:
keytool -v -printcert -file etechblog.cz.crt -rfc
Změna hesla úložiště klíčů Java
Pokud jste již vytvořili heslo pro úložiště klíčů Java, můžete ho změnit pomocí následujícího příkazu:
keytool -delete -alias etechblog.cz -keystore keystore.jks
Smazání certifikátu z úložiště klíčů Java
Pro smazání certifikátu je nutné zadat úložiště klíčů Java a jeho alias. Příklad:
keytool -delete -alias etechblog.cz -keystore keystore.jks
Prozkoumání příkazu a zobrazení nápovědy
Příkaz keytool nabízí celou řadu argumentů a rozšíření, díky kterým lze provádět mnoho různých operací. V závislosti na vašem konkrétním použití nemusíte využít všechny dostupné možnosti.
Pokud chcete podrobně prozkoumat všechny možnosti příkazu keytool, můžete zadat tento příkaz:
keytool -help
V případě, že používáte linuxový terminál, doporučujeme vám také prostudovat manuálovou stránku příkazu:
man keytool
V manuálové stránce najdete všechny podrobnosti, které potřebujete vědět o příkazu keytool.
Takže neváhejte a využijte své superschopnosti k tomu, abyste se o tomto užitečném nástroji dozvěděli co nejvíce!
Závěrem
Cesty k souborům a další možnosti konfigurace se mohou mírně lišit v závislosti na operačním systému, který používáte. Standardizované možnosti si můžete ověřit v dokumentaci společnosti Oracle.
Keytool je vynikající nástroj pro celou řadu úloh. Vyzkoušejte ho a zjistěte, co všechno s ním dokážete!
Můžete si také prostudovat některé příkazy Linuxu pro údržbu a optimalizaci provozu vašich systémů.