Keytool to aplikacja działająca w trybie tekstowym, która umożliwia zarządzanie i przechowywanie kluczy kryptograficznych oraz certyfikatów cyfrowych.
Jeżeli na Twoim komputerze zainstalowana jest platforma Java, możesz użyć narzędzia keytool do importowania certyfikatów CA, przeglądania listy certyfikatów, tworzenia certyfikatów z podpisem własnym, bezpiecznego przechowywania haseł i kluczy publicznych oraz prywatnych, a także do wykonywania wielu innych operacji.
Czujesz się przytłoczony? Bez obaw! W trakcie lektury wszystko stanie się bardziej zrozumiałe.
Chciałbym zaznaczyć, że w procesie testowania poleceń i ich omawiania posługuję się systemem Linux, co ilustruję dodatkowo przykładami.
Narzędzie Keytool możesz również wykorzystywać w systemach operacyjnych Windows oraz macOS.
Czym jest polecenie Keytool?
Jest to narzędzie do zarządzania kluczami i certyfikatami. Umożliwia ono przechowywanie par kluczy prywatnych i publicznych, które zazwyczaj służą do weryfikacji i autoryzacji dostępu do różnych usług.
Zgodnie z tytułem tego artykułu, można założyć, że polecenie to jest wykorzystywane głównie przez administratorów systemów oraz programistów.
W większości przypadków tak jest, jednakże kreatywny użytkownik może wykorzystać keytool do przechowywania haseł oraz kluczy tajnych w celach uwierzytelniania, szyfrowania i deszyfrowania danych. Zatem, jeśli jesteś osobą ciekawą nowych rozwiązań, zachęcam do wypróbowania go na swoim systemie.
Jeżeli pojęcie kluczy kryptograficznych jest dla Ciebie czymś nowym, warto przed rozpoczęciem eksperymentów z poleceniami keytool zapoznać się z naszym artykułem dotyczącym szyfrowania danych.
Dodatkowo, analiza przykładowych poleceń OpenSSL może pomóc Ci zrozumieć różnice i możliwości obu narzędzi.
Generowanie certyfikatu z podpisem własnym
keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>
W przeciwieństwie do certyfikatu SSL zakupionego od dostawcy, certyfikat z podpisem własnym jest wykorzystywany przede wszystkim w środowiskach programistycznych lub testowych, w celu nawiązywania bezpiecznego połączenia.
Możesz go wygenerować za pomocą przedstawionej wyżej składni polecenia keytool. Poniżej przykład:
keytool -genkeypair -alias newsblog.pl -keypass passforkeystore -validity 365 -storepass passforkeystore
Możesz zastosować dowolną nazwę dla aliasu, ja wykorzystuję newsblog.pl jako przykład. Masz możliwość dostosowania okresu ważności certyfikatu oraz ustalenia hasła do magazynu kluczy, zastępując wartość „passforkeystore” w powyższym poleceniu.
Pamiętaj, że w przypadku magazynów kluczy PKCS12 obsługiwane jest tylko jedno hasło. Jest to jednak wygodny typ magazynu, który nie jest zależny od języka Java.
Jeżeli wymagane jest oddzielne hasło dla magazynu kluczy oraz certyfikatu, możesz wyraźnie poinstruować keytool o konieczności zastosowania innego interfejsu.
Więcej szczegółów na ten temat znajdziesz w oficjalnej dokumentacji.
W trakcie procesu tworzenia certyfikatu, zostaniesz poproszony o podanie dodatkowych informacji o autentyczności. Wygląda to następująco:
What is your first and last name? [Unknown]: Ankush What is the name of your organizational unit? [Unknown]: newsblog.pl What is the name of your organization? [Unknown]: newsblog.pl 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=newsblog.pl, O=newsblog.pl, L=Bhubaneswar, ST=Odisha, C=91 correct? [no]: yes
Tworzenie magazynu kluczy Java i pary kluczy
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650
Generowanie magazynu kluczy Java i importowanie certyfikatu
Upewnij się, że posiadasz ważny certyfikat lub wygenerowałeś go wcześniej. Po wykonaniu tej czynności, możesz go zaimportować i utworzyć magazyn kluczy Java.
keytool -importcert -file test.crt -keystore truststore.jks -alias newsblog.pl
Generowanie pary kluczy do domyślnego magazynu kluczy z tematem
Możesz szybko wygenerować parę kluczy (na przykład o nazwie „ca”) za pomocą następującego polecenia:
keytool -alias ca -dname CN=CA -genkeypair
Tworzenie łańcucha certyfikatów podpisanych
Załóżmy, że masz już pary kluczy ca oraz ca1. Możesz utworzyć łańcuch certyfikatów, w którym ca podpisuje ca1, wykonując te polecenia:
keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert
Możesz rozszerzyć ten łańcuch o kolejne pary kluczy ca1 i ca2, gdzie ca1 podpisuje ca2.
Importowanie certyfikatu
Jeżeli chcesz zaimportować certyfikat z istniejącego pliku, wykonaj następujące kroki:
keytool -import -alias newsblog.pl -file geekflareserver.cer
Tworzenie żądania podpisania certyfikatu (CSR) dla istniejącego magazynu kluczy
Zakładając, że posiadasz już utworzony magazyn kluczy, możesz wygenerować CSR.
keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file newsblog.pl.csr
Wyświetlanie listy certyfikatów przechowywanych w magazynie kluczy Java
Magazyn kluczy może zawierać wiele certyfikatów. Jeżeli chcesz sprawdzić listę certyfikatów w pliku „keystore.jks”, musisz użyć następującego polecenia:
keytool -v -list -keystore keystore.jks
Dane wyjściowe powinny wyglądać następująco:
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=newsblog.pl, L=Bhubaneswar, ST=od, C=91 Issuer: CN=Ankush, OU=Geek, O=newsblog.pl, 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
Sprawdzanie zawartości pojedynczego certyfikatu
Jeżeli posiadasz już wygenerowany certyfikat, możesz wyświetlić o nim więcej informacji, wykorzystując następujące polecenie:
keytool -v -printcert -file server.crt
Wyświetlanie certyfikatów w magazynie kluczy Java
Możesz wyświetlić listę wszystkich certyfikatów z magazynu kluczy, korzystając z tego polecenia:
keytool -v -list -keystore keystore.jks
Wyświetlanie magazynu kluczy za pomocą aliasu
Jeżeli chcesz wyświetlić informacje o magazynie kluczy, używając aliasu, który został ustawiony podczas jego tworzenia, wprowadź to polecenie:
keytool -v -list -keystore keystore.jks -alias geekflareserver
Wyświetlanie listy certyfikatów w KeyStore
Jeżeli chcesz zweryfikować certyfikaty przechowywane w domyślnym magazynie kluczy, użyj następującego polecenia:
keytool -list -storepass passforkeystore
Pamiętaj, aby zastąpić „passforkeystore” Twoim hasłem.
Wyświetlanie informacji o certyfikacie
Jeżeli chcesz zweryfikować szczegóły konkretnego certyfikatu, możesz skorzystać z jego aliasu, bez konieczności podawania nazwy magazynu kluczy.
Oto przykład:
keytool -list -v -alias newsblog.pl -storepass passforkeystore
Wyświetlanie certyfikatu w formacie PEM
PEM to jeden z najczęściej stosowanych formatów certyfikatów i kluczy kryptograficznych. Aby wyświetlić certyfikat w formacie PEM, użyj polecenia:
keytool -v -printcert -file newsblog.pl.crt -rfc
Zmiana hasła magazynu kluczy Java
Jeżeli posiadasz utworzone hasło do magazynu kluczy Java, możesz je zmienić, stosując to polecenie:
keytool -delete -alias newsblog.pl -keystore keystore.jks
Usuwanie certyfikatu z magazynu kluczy Java
Możesz wskazać magazyn kluczy oraz alias certyfikatu, aby go usunąć. Na przykład:
keytool -delete -alias newsblog.pl -keystore keystore.jks
Zapoznanie się z poleceniem i uzyskanie pomocy
Polecenie keytool ma wiele argumentów i rozszerzeń umożliwiających wykonanie różnorodnych operacji. W zależności od potrzeb, nie wszystkie z nich będą konieczne w Twoim przypadku.
Jeżeli chcesz zagłębić się w szczegóły dotyczące opcji polecenia, zawsze możesz użyć komendy:
keytool -help
W przypadku korzystania z terminala Linux, polecam zapoznanie się ze stroną podręcznika (man) za pomocą polecenia:
man keytool
Za pomocą komendy man, masz dostęp do szczegółowych informacji dotyczących polecenia keytool.
Wykorzystaj tę możliwość, aby w pełni poznać możliwości tego narzędzia!
Podsumowanie
Ścieżki plików i inne ustawienia konfiguracyjne mogą się nieznacznie różnić w zależności od wykorzystywanej platformy. Dodatkowo, warto przejrzeć oficjalną dokumentację Oracle, aby zapoznać się ze standardowymi opcjami.
Keytool jest znakomitym narzędziem do wykonywania wielu zadań. Przetestuj je i sprawdź jego potencjał!
Możesz również zapoznać się z niektórymi poleceniami systemu Linux, aby utrzymać i zapewnić optymalne działanie systemów.