17 przykładów poleceń narzędzia Keytool, które warto poznać jako administrator systemu i programista

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.