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.
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 Sie mit dem Konzept kryptografischer Schlüssel noch nicht vertraut sind, sollten Sie sich unseren Artikel über ansehen Datenverschlüsselung bevor Sie keytool-Befehle ausprobieren.
Darüber hinaus das Auschecken der OpenSSL-Befehlsbeispiele kann Ihnen auch eine Vorstellung davon geben, wie es anders ist und was Sie mit jedem von ihnen tun können.
Create a Self-Signed Certificate
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 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 Schlüsselspeicher festlegen, das „passforkeystore“ im obigen Befehl.
Beachten Sie das nur Für PKCS12 KeyStores wird ein Kennwort unterstützt. 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 seinem lesen offizielle Dokumentation.
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]: Geekflare
What is the name of your organization?
[Unknown]: Geekflare
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=Geekflare, O=Geekflare, L=Bhubaneswar, ST=Odisha, C=91 correct?
[no]: yes
Create a Java Keystore and Key Pair
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650
Generate a Java Keystore and Import a certificate
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 geekflare
Generate a Key Pair to the Default Keystore With Subject
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
Create a Chain of Signed Certificates
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.
Importing a Certificate
Wenn Sie ein Zertifikat aus einer verfügbaren Datei importieren möchten, können Sie Folgendes tun:
keystool -import -alias geekflare -file geekflareserver.cer
Create a Certificate Signing Request (CSR) for the existing Keystore
Da Sie bereits einen Keystore erstellt haben, können Sie eine CSR generieren.
keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file geekflare.csr
List Certificates Stored in Java Keystore
Ein Keystore kann mehrere Einträge von Zertifikaten haben. Angenommen, wir überprüfen die Liste der Zertifikate in „keystore.jks” Datenbank, hier ist, was wir eingeben müssen:
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=Geekflare, L=Bhubaneswar, ST=od, C=91
Issuer: CN=Ankush, OU=Geek, O=Geekflare, 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
Check the Contents of a Single Certificate
Da Sie bereits ein generiertes Zertifikat haben, können Sie es wie folgt genauer überprüfen:
keytool -v -printcert -file server.crt
View Certificates in a Java Keystore
Sie können alle Zertifikate aus einer Keystore-Datenbank auflisten. So sieht der Befehl aus:
keytool -v -list -keystore keystore.jks
View Keystore Using an Alias and Keystore
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
List Certificates in KeyStore
Wenn Sie die im Standard-Keystore gespeicherten Zertifikate überprüfen möchten, verwenden Sie den Befehl:
keytool -list -storepass passforkeystore
Sie müssen ersetzen „passforkeystore“ mit dem von Ihnen festgelegten Passwort.
View Certificate Information
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 geekflare -storepass passforkeystore
View Certificate in PEM Format
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 geekflare.crt -rfc
Change a Java Keystore Password
Wenn Sie bereits ein Passwort für den Java Keystore erstellt haben, können Sie das Passwort mit dem Befehl ändern:
keytool -delete -alias geekflare -keystore keystore.jks
Delete a Certificate from Java Keystore
Sie können den Java Keystore und seinen Alias angeben, um ihn zu löschen. Zum Beispiel:
keytool -delete -alias geekflare -keystore keystore.jks
Explore The Command and Get Help
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!
Fazit
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 erkunden Linux-Befehle um die Systeme optimal zu warten und am Laufen zu halten.