17 Keytool-Befehlsbeispiele, die Sie als Sysadmin und Entwickler kennen sollten

Das Kommandozeilenwerkzeug Keytool

Keytool ist ein Befehlszeilenprogramm, das die Verwaltung und Speicherung von kryptografischen Schlüsseln und Zertifikaten ermöglicht.

Wenn Java auf Ihrem System installiert ist, können Sie den Befehl „keytool“ nutzen, um CA-Zertifikate zu importieren, Zertifikate aufzulisten, selbstsignierte Zertifikate zu erstellen, Passwörter sowie öffentliche und private Schlüssel zu speichern und vieles mehr.

Klingt kompliziert? Keine Sorge, ich werde es Ihnen im Laufe des Artikels verständlicher erläutern.

Ich werde Linux verwenden, um die Befehle zu testen und Ihnen anhand von Beispielen zu zeigen, wie sie funktionieren.

Die Keytool-Befehle können aber auch unter Windows und macOS verwendet werden.

Was genau ist ein Keytool-Befehl?

Es handelt sich um ein Dienstprogramm zur Verwaltung von Schlüsseln und Zertifikaten. Es ermöglicht Ihnen, private und öffentliche Schlüsselpaare zu speichern, welche üblicherweise zur Verifizierung und Authentifizierung des Zugriffs auf Dienste genutzt werden.

Wie der Titel dieses Artikels bereits vermuten lässt, wird der Befehl in erster Linie von Systemadministratoren und Softwareentwicklern eingesetzt.

Das stimmt zwar größtenteils, aber auch andere Nutzer können den Keytool-Befehl kreativ verwenden, um Passwörter und geheime Schlüssel für Authentifizierungs-, Verschlüsselungs- und Entschlüsselungszwecke zu speichern. Wenn Sie also neugierig sind, probieren Sie es auf Ihrem eigenen System aus.

Sollte Ihnen das Konzept von kryptografischen Schlüsseln neu sein, empfiehlt es sich, unseren Artikel zum Thema Datenverschlüsselung zu lesen, bevor Sie sich an den Keytool-Befehlen versuchen.

Zudem können Sie sich die Beispiele für OpenSSL-Befehle ansehen, um einen Eindruck davon zu bekommen, was der Unterschied ist und wozu die jeweiligen Werkzeuge fähig sind.

Ein selbstsigniertes Zertifikat erstellen

keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>

Im Gegensatz zu SSL-Zertifikaten, die man käuflich erwirbt, werden selbstsignierte Zertifikate nur zu Entwicklungs- und Testzwecken eingesetzt, um eine sichere Verbindung zu ermöglichen.

Sie können ein solches Zertifikat mit der oben gezeigten Keytool-Befehlssyntax erstellen. Hier ist ein Beispiel:

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

Sie können für den Alias einen beliebigen Namen vergeben; ich verwende hier „wdzwdz“ als Platzhalter. Sie können die Gültigkeitsdauer anpassen und ein Passwort für den Keystore festlegen, indem Sie im obigen Befehl „passforkeystore“ ersetzen.

Bitte beachten Sie, dass PKCS12-Keystores nur ein einziges Passwort unterstützen. Es handelt sich jedoch um einen praktischen Keystore-Typ, der nicht nur für Java spezifisch ist.

Sollten Sie zwei verschiedene Passwörter für den Keystore und das Zertifikat benötigen, müssen Sie dem Keytool-Befehl explizit mitteilen, dass er eine andere Schnittstelle verwenden soll.

Weitere Informationen hierzu finden Sie in der offiziellen Dokumentation.

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

What is your first and last name?
  [Unknown]:  Ankush
What is the name of your organizational unit?
  [Unknown]:  wdzwdz
What is the name of your organization?
  [Unknown]:  wdzwdz
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=wdzwdz, O=wdzwdz, L=Bhubaneswar, ST=Odisha, C=91 correct?
  [no]:  yes

Einen Java Keystore und ein Schlüsselpaar erstellen

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

Einen Java Keystore generieren und ein Zertifikat importieren

Stellen Sie sicher, dass Sie über ein gültiges Zertifikat verfügen oder dieses zuvor erstellt haben. Anschließend können Sie es importieren und einen Java Keystore erzeugen.

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

Ein Schlüsselpaar für den Standard-Keystore mit Betreff erstellen

Mit dem folgenden Befehl können Sie schnell ein Schlüsselpaar (zum Beispiel mit dem Namen „ca“) erzeugen:

keytool -alias ca -dname CN=CA -genkeypair

Eine Kette signierter Zertifikate erstellen

Angenommen, Sie haben die Schlüsselpaare ca und ca1 erstellt. Sie können eine Kette signierter Zertifikate erzeugen, bei der ca ca1 signiert, indem Sie die folgenden Befehle ausführen:

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 signiert.

Ein Zertifikat importieren

Wenn Sie ein Zertifikat aus einer bestehenden Datei importieren möchten, gehen Sie wie folgt vor:

keytool -import -alias wdzwdz -file geekflareserver.cer

Eine Certificate Signing Request (CSR) für den vorhandenen Keystore erstellen

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

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

Im Java Keystore gespeicherte Zertifikate auflisten

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

keytool -v -list -keystore keystore.jks

Die Ausgabe dafür könnte wie folgt aussehen:

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=wdzwdz, L=Bhubaneswar, ST=od, C=91
Issuer: CN=Ankush, OU=Geek, O=wdzwdz, 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

Den Inhalt eines einzelnen Zertifikats überprüfen

Da Sie bereits ein Zertifikat generiert haben, können Sie es wie folgt genauer inspizieren:

keytool -v -printcert -file server.crt

Zertifikate in einem Java Keystore anzeigen

Sie können alle Zertifikate aus einer Keystore-Datenbank auflisten. Hier ist der entsprechende Befehl:

keytool -v -list -keystore keystore.jks

Keystore mit Alias und Keystore anzeigen

Wenn Sie einen Keystore anhand seines Aliasnamens ü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 diesen 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 einsehen möchten, können Sie dessen Alias verwenden, ohne die Keystore-Datenbank anzugeben.

So sieht das aus:

keytool -list -v -alias wdzwdz -storepass passforkeystore

Zertifikat im PEM-Format anzeigen

PEM ist ein weit verbreitetes Format für Zertifikate und kryptografische Schlüssel. Wenn Sie ein Zertifikat im PEM-Format anzeigen möchten, geben Sie Folgendes ein:

keytool -v -printcert -file wdzwdz.crt -rfc

Ein Java Keystore Passwort ändern

Wenn Sie bereits ein Passwort für Ihren Java Keystore festgelegt haben, können Sie es mit dem folgenden Befehl ändern:

keytool -delete -alias wdzwdz -keystore keystore.jks

Ein Zertifikat aus dem Java Keystore löschen

Sie können den Java Keystore und den zugehörigen Alias angeben, um ein Zertifikat zu löschen. Zum Beispiel:

keytool -delete -alias wdzwdz -keystore keystore.jks

Den Befehl erkunden und Hilfe erhalten

Der Befehl verfügt über eine Vielzahl von Argumenten und Erweiterungen, um viele Aufgaben zu erledigen. Je nach Anwendungsfall benötigen Sie möglicherweise nicht alle davon.

Wenn Sie sich detaillierter mit den Befehlsoptionen auseinandersetzen möchten, können Sie jederzeit Folgendes eingeben:

keytool -help

Falls Sie ein Linux-Terminal verwenden, empfehle ich in jedem Fall, die man-Seite (Handbuch) mit diesem Befehl aufzurufen:

man keytool

Der Befehl „man“ liefert Ihnen alle Details, die Sie über den Befehl „keytool“ benötigen.

Behalten Sie dies also als Ihre Superkraft, um alles über dieses Tool zu erfahren, was Sie nur können!

Zusammenfassung

Die Dateipfade und andere Anpassungsoptionen können sich leicht von der von Ihnen verwendeten Plattform unterscheiden. Sie können sich auch auf die Dokumentation von Oracle für standardisierte Optionen beziehen.

Keytool ist ein ausgezeichnetes Werkzeug für eine Vielzahl von Aufgaben. Probieren Sie es aus und sehen Sie, was Sie damit alles anstellen können!

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