Keytool ist ein Befehlszeilen-Dienstprogramm, mit dem Sie kryptografische Schlüssel und Zertifikate verwalten und speichern können.

Wenn auf Ihrem System Java installiert ist, können Sie den Befehl keytool verwenden, um ein CA-Zertifikat zu importieren, Zertifikate aufzulisten, selbstsignierte Zertifikate zu erstellen, Passphrasen und öffentliche/private Schlüssel zu speichern und viele weitere Dinge zu tun.

Verwirrt? Keine Sorge, ich erkläre es Ihnen im Laufe der Lektüre in einfacheren Worten.

Beachten Sie, dass ich Linux verwende, um die Befehle zu testen und Ihnen anhand von Beispielen etwas mehr darüber zu erklären.

Sie können Keytool-Befehle auch unter Windows und macOS verwenden.

Was ist ein Keytool-Befehl?

Es handelt sich um ein Dienstprogramm zur Verwaltung von Schlüsseln und Zertifikaten. Es ermöglicht Ihnen, private/öffentliche Schlüsselpaare zu speichern, die in der Regel dazu dienen, den Zugang zu Diensten zu verifizieren/authentifizieren.

In Anbetracht des Titels dieses Artikels kann man davon ausgehen, dass der Befehl hauptsächlich von Systemadministratoren und Entwicklern verwendet wird.

In den meisten Fällen ja, aber ein Benutzer kann mit dem Befehl keytool kreativ werden, um Passphrasen und geheime Schlüssel für Authentifizierungs-, Verschlüsselungs- und Entschlüsselungszwecke zu speichern. Wenn Sie also neugierig geworden sind, sollten Sie es in Ihrem System ausprobieren.

Wenn Sie mit dem Konzept der kryptografischen Schlüssel nicht vertraut sind, sollten Sie sich unseren Artikel über Datenverschlüsselung ansehen, bevor Sie die keytool-Befehle ausprobieren.

Außerdem können Sie sich anhand der OpenSSL-Befehlsbeispiele einen Eindruck davon verschaffen, wie sich die Befehle unterscheiden und was Sie mit ihnen alles machen können.

Erstellen Sie ein selbstsigniertes Zertifikat

keytool -genkeypair -alias  -keypass  -validity  -storepass <storepass&gt

Im Gegensatz zu einem gekauften SSL-Zertifikat wird ein selbstsigniertes Zertifikat nur für Entwicklungs-/Testzwecke verwendet, um eine sichere Verbindung zu nutzen.

Sie können es mit der oben erwähnten Befehlssyntax von keytool erzeugen. So sieht es zum Beispiel aus:

keytool -genkeypair -alias geekflare -keypass passforkeystore -validity 365 -storepass passforkeystore

Sie können einen beliebigen Namen für den Alias verwenden; ich verwende geekflare als Platzhaltertext. Sie können die Gültigkeit anpassen und ein Passwort für den Keystore angeben, indem Sie“passforkeystore” im obigen Befehl ersetzen.

Beachten Sie, dass für PKCS12 KeyStores nur ein Passwort unterstützt wird. Es handelt sich jedoch um einen praktischen Keystore-Typ, der nicht Java-spezifisch ist.

Wenn Sie zwei verschiedene Passwörter für Ihren Keystore und das Zertifikat benötigen, sollten Sie dem Befehl keytool ausdrücklich mitteilen, dass er eine andere Schnittstelle verwenden soll.

Mehr darüber können Sie in der offiziellen Dokumentation nachlesen.

Sobald Sie mit der Erstellung fortfahren, werden Sie nach weiteren Details zur Authentizität gefragt. So sollte es aussehen:

Wie lauten Ihr Vor- und Nachname?
  [Unbekannt]:  Ankush
Wie lautet der Name Ihrer Organisationseinheit?
  [Unbekannt]:  Geekflare
Wie lautet der Name Ihrer Organisation?
  [Unbekannt]:  Geekflare
Wie lautet der Name Ihrer Stadt oder Ihres Ortes?
  [Unbekannt]:  Bhubaneswar
Wie lautet der Name Ihres Bundeslandes oder Ihrer Provinz?
  [Unbekannt]:  Odisha
Wie lautet der zweibuchstabige Ländercode für diese Einheit?
  [Unbekannt]: 91
Ist CN=Ankush, OU=Geekflare, O=Geekflare, L=Bhubaneswar, ST=Odisha, C=91 richtig?
  [nein]: ja

Erstellen Sie einen Java Keystore und ein Schlüsselpaar

keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650

Erzeugen Sie einen Java Keystore und importieren Sie ein Zertifikat

Vergewissern Sie sich, dass Sie ein gültiges Zertifikat haben oder zuvor eines generiert haben. Sobald dies geschehen ist, können Sie es importieren und einen Java Keystore generieren.

keytool -importcert -file test.crt -keystore truststore.jks -alias geekflare

Erzeugen eines Schlüsselpaares für den Standard-Keystore mit Betreff

Mit dem folgenden Befehl können Sie schnell ein Schlüsselpaar (z.B. mit dem Namen “ca”) erzeugen:

keytool -alias ca -dname CN=CA -genkeypair

Eine Kette von signierten Zertifikaten erstellen

Angenommen, Sie haben die Schlüsselpaare ca und ca1 erstellt. Mit den folgenden Befehlen können Sie eine Kette von signierten Zertifikaten erstellen, in der ca ca1 signieren wird:

keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert

Sie können die Kette mit zwei weiteren Schlüsselpaaren ca1 und ca2 vervollständigen, wobei ca1 ca2 signieren wird.

Importieren eines Zertifikats

Wenn Sie ein Zertifikat aus einer verfügbaren Datei importieren möchten, können Sie wie folgt vorgehen:

keystool -import -alias geekflare -datei geekflareserver.cer

Erstellen Sie eine Zertifikatssignierungsanforderung (CSR) für den vorhandenen Keystore

Da Sie bereits einen Keystore erstellt haben, können Sie eine CSR erzeugen.

keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file geekflare.csr

In Java Keystore gespeicherte Zertifikate auflisten

Ein Keystore kann mehrere Einträge von Zertifikaten enthalten. Angenommen, wir überprüfen die Liste der Zertifikate in der Datenbank“keystore.jks“, dann müssen wir Folgendes eingeben:

keytool -v -list -keystore keystore.jks

Die Ausgabe sieht dann wie folgt aus:

keytool -v -list -Schlüsselspeicher keystore.jks
Geben Sie das Passwort für den Schlüsselspeicher ein:  
Typ des Schlüsselspeichers: PKCS12
Schlüsselspeicher-Anbieter: SUN

Ihr Schlüsselspeicher enthält 2 Einträge

Alias-Name: geekflarecert
Erstellungsdatum: 16-Nov-2022
Eintragstyp: PrivateKeyEntry
Länge der Zertifikatskette: 1
Zertifikat[1]:
Eigentümer: CN=Ankush, OU=Geek, O=Geekflare, L=Bhubaneswar, ST=od, C=91
Aussteller: CN=Ankush, OU=Geek, O=Geekflare, L=Bhubaneswar, ST=od, C=91
Seriennummer: a0b9a99
Gültig von: Wed Nov 16 09:42:37 IST 2022 bis: Sat Nov 13 09:42:37 IST 2032
Zertifikat-Fingerabdrücke:
	 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
Name des Signaturalgorithmus: SHA256mitRSA
Subject Public Key Algorithmus: 2048-Bit RSA-Schlüssel
Version: 3

Prüfen Sie den Inhalt eines einzelnen Zertifikats

Da Sie bereits über ein generiertes Zertifikat verfügen, können Sie den Inhalt wie folgt überprüfen:

keytool -v -printcert -datei server.crt

Zertifikate in einem Java Keystore anzeigen

Sie können alle Zertifikate aus einer Keystore-Datenbank auflisten. So sieht der Befehl aus:

keytool -v -list -Schlüsselspeicher keystore.jks

Keystore über einen Alias und Keystore anzeigen

Wenn Sie einen Keystore anhand seines Alias-Namens überprüfen möchten, den Sie bei der Erstellung festgelegt haben, geben Sie Folgendes ein:

keytool -v -list -keystore keystore.jks -alias geekflareserver

Zertifikate im KeyStore auflisten

Wenn Sie die im Standard-Keystore gespeicherten Zertifikate überprüfen möchten, verwenden Sie den folgenden Befehl:

keytool -list -storepass passforkeystore

Sie müssen“passforkeystore” durch das von Ihnen festgelegte Passwort ersetzen.

Zertifikatsinformationen anzeigen

Wenn Sie die Details eines einzelnen Zertifikats überprüfen möchten, können Sie dessen Alias verwenden, ohne die Keystone-Datenbank anzugeben.

So sieht es aus:

keytool -list -v -alias geekflare -storepass passforkeystore

Zertifikat im PEM-Format anzeigen

PEM ist eines der gängigsten Formate für Zertifikate und kryptografische Schlüssel. Wenn Sie ein Zertifikat im PEM-Format überprüfen möchten, geben Sie Folgendes ein:

keytool -v -printcert -datei geekflare.crt -rfc

Ändern eines Java Keystore-Passworts

Wenn Sie bereits ein Passwort für den Java Keystore erstellt haben, können Sie das Passwort mit dem folgenden Befehl ändern:

keytool -delete -alias geekflare -keystore keystore.jks

Ein Zertifikat aus dem Java Keystore löschen

Sie können den Java Keystore und seinen Alias angeben, um ihn zu löschen. Zum Beispiel:

keytool -delete -alias geekflare -keystore keystore.jks

Erkunden Sie den Befehl und erhalten Sie Hilfe

Der Befehl hat mehrere Argumente und Erweiterungen, mit denen Sie viele Dinge erledigen können. Je nach Anwendungsfall müssen Sie vielleicht nicht alle davon verwenden.

Wenn Sie also tief in die Befehlsoptionen eintauchen möchten, können Sie jederzeit Folgendes eingeben:

keytool -help

Wenn Sie ein Linux-Terminal verwenden, empfehle ich Ihnen in jedem Fall, die man-Seite (Handbuch) mit diesem Befehl zu lesen:

man keytool

Mit dem man-Befehl erhalten Sie alle Details, die Sie über den Befehl keytool benötigen.

Machen Sie es also zu Ihrer Superkraft, alles darüber zu lernen!

Zusammenfassung

Der Pfad der Dateien und andere Anpassungsoptionen können sich je nach der von Ihnen verwendeten Plattform ein wenig unterscheiden. Sie können die standardisierten Optionen auch in der Dokumentation von Oracle nachlesen.

Keytool ist ein hervorragendes Werkzeug für eine Reihe von Aufgaben. Probieren Sie es aus und sehen Sie, was Sie damit machen können!

Sie können auch einige Linux-Befehle ausprobieren, um die Systeme zu warten und optimal am Laufen zu halten.