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.