Keytool ist ein Befehlszeilendienstprogramm, mit dem Sie kryptografische Schlüssel und Zertifikate verwalten/speichern können.
Wenn auf Ihrem System Java installiert ist, können Sie den keytool-Befehl verwenden, um ein CA-Zertifikat zu importieren, Zertifikate aufzulisten, selbstsignierte Zertifikate zu erstellen, Passphrasen und öffentliche/private Schlüssel zu speichern und vieles mehr.
Verwirrt? Ärgern Sie sich nicht; Ich werde es in einfacheren Worten erklären, während Sie lesen.
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.
Inhaltsverzeichnis
Was ist ein Keytool-Befehl?
Es ist ein Dienstprogramm zur Verwaltung von Schlüsseln und Zertifikaten. Es ermöglicht Ihnen, private/öffentliche Schlüsselpaare zu speichern, die normalerweise dazu dienen, den Zugriff auf Dienste zu verifizieren/authentifizieren.
In Anbetracht des Titels dieses Artikels kann man davon ausgehen, dass der Befehl hauptsächlich von Systemadministratoren und Entwicklern verwendet wird.
Zum größten Teil ja, aber ein Benutzer kann mit dem keytool-Befehl kreativ werden, um Passphrasen und geheime Schlüssel für Authentifizierungs-, Verschlüsselungs- und Entschlüsselungszwecke zu speichern. Wenn Sie also neugierig sind, sollten Sie es auf Ihrem System ausprobieren.
Wenn Ihnen das Konzept kryptografischer Schlüssel neu ist, sollten Sie sich unseren Artikel zur Datenverschlüsselung ansehen, bevor Sie keytool-Befehle ausprobieren.
Darüber hinaus können Sie sich anhand der OpenSSL-Befehlsbeispiele eine Vorstellung davon machen, wie es anders ist und was Sie mit jedem davon tun können.
Erstellen Sie ein selbstsigniertes Zertifikat
keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>
Im Gegensatz zu einem SSL-Zertifikat, das Sie kaufen, wird ein selbstsigniertes Zertifikat nur zu Entwicklungs-/Testzwecken verwendet, um eine sichere Verbindung zu verwenden.
Sie können einen mit der oben erwähnten Keytool-Befehlssyntax generieren. So sieht es beispielsweise aus:
keytool -genkeypair -alias wdzwdz -keypass passforkeystore -validity 365 -storepass passforkeystore
Sie können einen beliebigen Namen für den Alias verwenden; Als Platzhaltertext verwende ich wdzwdz. Sie können die Gültigkeit anpassen und ein Passwort für den Schlüsselspeicher angeben, indem Sie im obigen Befehl „passforkeystore“ ersetzen.
Beachten Sie, dass für PKCS12-KeyStores nur ein Kennwort unterstützt wird. Es handelt sich jedoch um einen praktischen Keystore-Typ, der nicht Java-spezifisch ist.
Wenn Sie zwei unterschiedliche Passwörter für Ihren Schlüsselspeicher und das Zertifikat benötigen, sollten Sie dem keytool-Befehl möglicherweise explizit mitteilen, dass er eine andere Schnittstelle verwenden soll.
Sie können mehr darüber in der offiziellen Dokumentation lesen.
Sobald Sie mit der Erstellung fortfahren, werden Sie nach zusätzlichen Details zur Authentizität gefragt. So sollte es 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
Erstellen Sie einen Java-Keystore und ein Schlüsselpaar
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650
Generieren Sie einen Java Keystore und importieren Sie ein Zertifikat
Stellen Sie sicher, dass Sie über ein gültiges Zertifikat verfügen oder zuvor eines erstellt haben; Sobald Sie fertig sind, können Sie es importieren und einen Java Keystore generieren.
keytool -importcert -file test.crt -keystore truststore.jks -alias wdzwdz
Generieren Sie ein Schlüsselpaar für den Standardschlüsselspeicher mit Betreff
Mit dem folgenden Befehl können Sie schnell ein Schlüsselpaar (z. B. mit dem Namen „ca“) generieren:
keytool -alias ca -dname CN=CA -genkeypair
Erstellen Sie eine Kette signierter Zertifikate
Angenommen, Sie haben die Schlüsselpaare ca und ca1 erstellt. Sie können eine Kette signierter Zertifikate erstellen, bei der ca ca1 mit den folgenden Befehlen signiert:
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.
Importieren eines Zertifikats
Wenn Sie ein Zertifikat aus einer verfügbaren Datei importieren möchten, können Sie Folgendes tun:
keystool -import -alias wdzwdz -file geekflareserver.cer
Erstellen Sie eine Certificate Signing Request (CSR) für den vorhandenen Keystore
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 haben. Angenommen, wir überprüfen die Liste der Zertifikate in der Datenbank „keystore.jks“, müssen wir Folgendes eingeben:
keytool -v -list -keystore keystore.jks
Die Ausgabe dafür sieht wie folgt aus:
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
Überprüfen Sie den Inhalt eines einzelnen Zertifikats
Da Sie bereits ein generiertes Zertifikat haben, können Sie es wie folgt genauer überprüfen:
keytool -v -printcert -file 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 -keystore keystore.jks
Schlüsselspeicher mit Alias und Schlüsselspeicher anzeigen
Wenn Sie einen Schlüsselspeicher anhand seines Aliasnamens überprüfen möchten, den Sie beim Erstellen festgelegt haben, geben Sie Folgendes ein:
keytool -v -list -keystore keystore.jks -alias geekflareserver
Zertifikate im Schlüsselspeicher auflisten
Wenn Sie die im Standard-Keystore gespeicherten Zertifikate überprüfen möchten, verwenden Sie den Befehl:
keytool -list -storepass passforkeystore
Sie müssen „passforkeystore“ durch das von Ihnen festgelegte Passwort ersetzen.
Zertifikatinformationen anzeigen
Wenn Sie die Details für ein einzelnes Zertifikat überprüfen müssen, können Sie dessen Alias verwenden, ohne die Keystone-Datenbank anzugeben.
So sieht es aus:
keytool -list -v -alias wdzwdz -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 mit PEM prüfen möchten, geben Sie Folgendes ein:
keytool -v -printcert -file wdzwdz.crt -rfc
Ändern Sie ein Java Keystore-Passwort
Wenn Sie bereits ein Passwort für den Java Keystore erstellt haben, können Sie das Passwort mit dem Befehl ändern:
keytool -delete -alias wdzwdz -keystore keystore.jks
Löschen Sie ein Zertifikat aus dem Java Keystore
Sie können den Java Keystore und seinen Alias angeben, um ihn zu löschen. Zum Beispiel:
keytool -delete -alias wdzwdz -keystore keystore.jks
Entdecken Sie den Befehl und erhalten Sie Hilfe
Der Befehl hat mehrere Argumente und Erweiterungen, um viele Dinge zu erledigen. Abhängig von Ihrem Anwendungsfall müssen Sie möglicherweise alle verwenden oder nicht.
Wenn Sie also tief in die Befehlsoptionen eintauchen möchten, können Sie jederzeit Folgendes eingeben:
keytool -help
Wenn Sie ein Linux-Terminal verwenden, würde ich in jedem Fall empfehlen, die man (Handbuch) Seite mit diesem Befehl zu lesen:
man keytool
Mit dem Befehl man erhalten Sie alle Details, die Sie über den Befehl keytool benötigen.
Behalten Sie es also als Ihre Superkraft, alles darüber zu lernen, was Sie können!
Einpacken
Der Pfad der Dateien und andere Anpassungsoptionen können sich geringfügig von der von Ihnen verwendeten Plattform unterscheiden. Sie können sich auch auf die Dokumentation von Oracle für die standardisierten Optionen beziehen.
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 untersuchen, um die Systeme zu warten und optimal am Laufen zu halten.