Keytool je alatka komandne linije koja vam omogućava da upravljate i skladištite kriptografske ključeve i sertifikate.
Ukoliko je Java instalirana na vašem sistemu, možete koristiti komandu keytool za uvoz CA sertifikata, listanje sertifikata, kreiranje samopotpisanih sertifikata, čuvanje pristupnih fraza, javnih i privatnih ključeva, i još mnogo toga.
Zvuči komplikovano? Ne brinite, objasniću sve jednostavnije kako budete čitali ovaj tekst.
Važno je napomenuti da koristim Linux za testiranje komandi, i da ću sve objašnjavati kroz primere.
Komande Keytool-a možete koristiti i na Windows i macOS operativnim sistemima.
Šta je komanda Keytool?
Ovo je uslužni program namenjen upravljanju ključevima i sertifikatima. Omogućava vam da čuvate parove privatnih i javnih ključeva, koji se obično koriste za verifikaciju i autentifikaciju pristupa različitim servisima.
S obzirom na naslov ovog teksta, može se zaključiti da ovu komandu uglavnom koriste sistemski administratori i programeri.
Iako je to uglavnom tačno, korisnik može biti kreativan sa keytool komandom i koristiti je za skladištenje pristupnih fraza i tajnih ključeva za potrebe autentifikacije, šifrovanja i dešifrovanja. Zato, ako ste radoznali, isprobajte je na svom sistemu.
Ukoliko ste novi u konceptu kriptografskih ključeva, preporučujemo da pogledate naš članak o šifrovanju podataka pre nego što se upustite u korišćenje komandi alata za ključeve.
Dodatno, pregled primera komandi OpenSSL-a takođe vam može pružiti bolji uvid u razlike između ova dva alata i njihove mogućnosti.
Kreirajte samopotpisani sertifikat
keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>
Za razliku od SSL sertifikata koje kupujete, samopotpisani sertifikat se primenjuje isključivo u svrhe razvoja i testiranja za uspostavljanje bezbedne veze.
Možete ga generisati koristeći gore navedenu sintaksu komande keytool. Na primer, evo kako to izgleda:
keytool -genkeypair -alias techblog.co.rs -keypass passforkeystore -validity 365 -storepass passforkeystore
Možete koristiti bilo koje ime za alias; ja koristim „techblog.co.rs“ kao primer. Takođe možete podesiti trajanje validnosti i lozinku za keystore zamenom „passforkeystore“ u navedenoj komandi.
Imajte na umu da samo jedna lozinka može biti korišćena za PKCS12 Keystores. Međutim, ovaj tip Keystore-a je praktičan jer nije specifičan za Javu.
Ukoliko vam trebaju dve različite lozinke, za skladište ključeva i za sam sertifikat, potrebno je da eksplicitno naznačite keytool komandi da koristi drugačiji interfejs.
Više o tome možete saznati u zvaničnoj dokumentaciji.
Kada nastavite sa kreiranjem, sistem će tražiti dodatne informacije radi autentifikacije. Evo kako bi to trebalo da izgleda:
What is your first and last name? [Unknown]: Ankush What is the name of your organizational unit? [Unknown]: techblog.co.rs What is the name of your organization? [Unknown]: techblog.co.rs 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=techblog.co.rs, O=techblog.co.rs, L=Bhubaneswar, ST=Odisha, C=91 correct? [no]: yes
Napravite Java skladište ključeva i par ključeva
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650
Generišite Java skladište ključeva i uvezite sertifikat
Uverite se da imate validan sertifikat ili da ste ga prethodno generisali; nakon toga, možete ga uvesti i generisati Java Keystore.
keytool -importcert -file test.crt -keystore truststore.jks -alias techblog.co.rs
Generišite par ključeva za podrazumevano skladište ključeva sa subjektom
Par ključeva možete brzo generisati (na primer, sa imenom „ca“) koristeći sledeću komandu:
keytool -alias ca -dname CN=CA -genkeypair
Napravite lanac potpisanih sertifikata
Pretpostavimo da ste kreirali parove ključeva „ca“ i „ca1“. Možete kreirati lanac potpisanih sertifikata tako da „ca“ potpisuje „ca1“ pomoću sledećih komandi:
keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert
Lanac možete upotpuniti sa još dva para ključeva „ca1“ i „ca2“, gde će „ca1“ potpisati „ca2“.
Uvoz sertifikata
Ako želite da uvezete sertifikat iz postojeće datoteke, evo kako to možete učiniti:
keystool -import -alias techblog.co.rs -file geekflareserver.cer
Kreirajte zahtev za potpisivanje sertifikata (CSR) za postojeće skladište ključeva
Pod pretpostavkom da ste već kreirali Keystore, možete generisati CSR.
keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file techblog.co.rs.csr
Lista sertifikata uskladištenih u Java Keystore
Skladište ključeva može sadržati više unosa sertifikata. Ukoliko želimo da proverimo listu sertifikata u bazi podataka „keystore.jks“, potrebno je da unesemo sledeće:
keytool -v -list -keystore keystore.jks
Izlaz će izgledati otprilike ovako:
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=techblog.co.rs, L=Bhubaneswar, ST=od, C=91 Issuer: CN=Ankush, OU=Geek, O=techblog.co.rs, 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
Proverite sadržaj jednog sertifikata
Pošto već imate generisan sertifikat, možete proveriti više detalja o njemu koristeći sledeću komandu:
keytool -v -printcert -file server.crt
Pregledajte sertifikate u Java skladištu ključeva
Možete listati sve sertifikate iz Keystore baze podataka. Evo kako izgleda komanda:
keytool -v -list -keystore keystore.jks
Prikažite Keystore koristeći Alias i Keystore
Ako želite da proverite Keystore koristeći njegov alias koji ste podesili prilikom kreiranja, unesite sledeće:
keytool -v -list -keystore keystore.jks -alias geekflareserver
Navedite sertifikate u Keystore-u
Ako želite da proverite sertifikate uskladištene u podrazumevanom skladištu ključeva, koristite komandu:
keytool -list -storepass passforkeystore
Morate zameniti „passforkeystore“ sa lozinkom koju ste podesili.
Pogledajte informacije o sertifikatu
Ako treba da proverite detalje jednog sertifikata, možete koristiti njegov alias bez navođenja ključne baze podataka.
Evo kako to izgleda:
keytool -list -v -alias techblog.co.rs -storepass passforkeystore
Pogledajte sertifikat u PEM formatu
PEM je jedan od najčešćih formata za sertifikate i kriptografske ključeve. Ako želite da proverite sertifikat sa PEM-om, unesite sledeće:
keytool -v -printcert -file techblog.co.rs.crt -rfc
Promenite lozinku za Java skladište ključeva
Ako ste već kreirali lozinku za Java Keystore, možete je promeniti koristeći komandu:
keytool -delete -alias techblog.co.rs -keystore keystore.jks
Obrišite sertifikat iz Java Keystore-a
Možete odrediti Java Keystore i njegov alias da biste ga obrisali. Na primer:
keytool -delete -alias techblog.co.rs -keystore keystore.jks
Istražite komandu i potražite pomoć
Komanda ima nekoliko argumenata i ekstenzija za obavljanje različitih zadataka. U zavisnosti od vašeg konkretnog slučaja, možda nećete morati da koristite sve njih.
Stoga, ako želite dublje da istražite opcije komande, uvek možete uneti:
keytool -help
U svakom slučaju, ako koristite Linux terminal, preporučujem da pročitate man (manual) stranicu sa ovom komandom:
man keytool
Pomoću komande man, možete dobiti sve potrebne detalje o komandi keytool.
Zato, iskoristite svoju supermoć da naučite sve što možete o ovoj komandi!
Zaključak
Putanja do datoteka i ostale opcije prilagođavanja se mogu razlikovati u zavisnosti od platforme koju koristite. Takođe možete pogledati Oracle-ovu dokumentaciju za standardizovane opcije.
Keytool je izvanredan alat za različite zadatke. Isprobajte ga i otkrijte šta sve možete da uradite sa njim!
Takođe, možete istražiti i neke Linux komande za održavanje i optimizaciju rada vaših sistema.