Hantera kryptografiska nycklar och certifikat med Keytool
Keytool är ett kraftfullt kommandoradsverktyg som ger dig möjlighet att administrera och lagra kryptografiska nycklar och digitala certifikat.
Om Java är installerat på din dator kan du dra nytta av kommandot keytool för att utföra en mängd olika uppgifter. Du kan bland annat importera certifikat från certifikatutfärdare (CA), granska listor med certifikat, generera självsignerade certifikat, säkert lagra lösenord och offentliga/privata nycklar. Verktyget erbjuder många fler användningsområden.
Känns det förvirrande? Lugn, jag kommer att förklara allt på ett enkelt sätt när du fortsätter läsa.
Jag kommer att använda Linux för att demonstrera kommandona och ge dig exempel.
Men du kan även använda keytool i Windows och macOS.
Vad är ett keytool-kommando?
Det är ett instrument för hantering av nycklar och certifikat. Det låter dig spara privata och offentliga nyckelpar, som ofta används för att bekräfta behörighet till tjänster.
Med tanke på ämnet för den här artikeln kan vi dra slutsatsen att keytool främst används av systemadministratörer och utvecklare.
Det är oftast sant, men en användare kan också använda keytool för att lagra lösenord och hemliga nycklar för autentisering, kryptering och dekryptering. Om du är nyfiken borde du definitivt prova det själv.
Om du inte är bekant med konceptet kryptografiska nycklar, kanske du vill läsa vår artikel om datakryptering innan du testar keytool.
Du kan också kika på exemplen för OpenSSL-kommandon för att få en uppfattning om skillnaderna och vad du kan göra med båda.
Skapa ett självsignerat certifikat
keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>
Ett självsignerat certifikat, till skillnad från ett SSL-certifikat som du köper, används primärt i utvecklings- och testsammanhang för att upprätta en säker anslutning.
Du kan skapa ett genom att använda keytool-kommandots syntax som anges ovan. Här är ett exempel:
keytool -genkeypair -alias adminvista.com -keypass passforkeystore -validity 365 -storepass passforkeystore
Du kan välja valfritt namn som alias, jag använder adminvista.com som platshållare. Du kan justera giltighetstiden och bestämma ett lösenord för Keystore, som ersätter ”passforkeystore” i kommandot ovan.
Observera att endast ett lösenord är tillåtet för PKCS12 KeyStores. Det är dock en praktisk Keystore-typ som inte är unik för Java.
Om du behöver olika lösenord för din Keystore och certifikatet, kan du specifikt ange för keytool att använda ett annat gränssnitt.
Du kan läsa mer om detta i den officiella dokumentationen.
När du har påbörjat processen kommer den att be om detaljer för att fastställa din identitet. Så här ser det ut:
What is your first and last name? [Unknown]: Ankush What is the name of your organizational unit? [Unknown]: adminvista.com What is the name of your organization? [Unknown]: adminvista.com 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=adminvista.com, O=adminvista.com, L=Bhubaneswar, ST=Odisha, C=91 correct? [no]: yes
Generera en Java Keystore och ett nyckelpar
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650
Skapa en Java Keystore och importera ett certifikat
Se till att du har ett giltigt certifikat, eller har genererat ett tidigare. När detta är gjort kan du importera det och skapa en Java Keystore.
keytool -importcert -file test.crt -keystore truststore.jks -alias adminvista.com
Generera ett nyckelpar till standardnyckellagret med subjekt
Du kan snabbt skapa ett nyckelpar (med namnet ”ca”) med det här kommandot:
keytool -alias ca -dname CN=CA -genkeypair
Skapa en kedja av signerade certifikat
Anta att du har skapat nyckelpar för ca och ca1. Du kan bygga en kedja av signerade certifikat där ca signerar ca1 med de här kommandona:
keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert
Du kan utöka kedjan med ytterligare två nyckelpar, ca1 och ca2, där ca1 signerar ca2.
Importera ett certifikat
Om du vill importera ett certifikat från en fil, kan du göra det på det här sättet:
keytool -import -alias adminvista.com -file geekflareserver.cer
Generera en CSR för en befintlig Keystore
Om du redan har skapat en Keystore kan du generera en Certificate Signing Request (CSR).
keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file adminvista.com.csr
Visa certifikat lagrade i en Java Keystore
En Keystore kan rymma flera certifikat. Låt oss säga att vi ska kolla listan över certifikat i databasen ”keystore.jks”. Då skriver vi in följande:
keytool -v -list -keystore keystore.jks
Utskriften ser ut så här:
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=adminvista.com, L=Bhubaneswar, ST=od, C=91 Issuer: CN=Ankush, OU=Geek, O=adminvista.com, 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
Granska information om ett enskilt certifikat
Om du redan har genererat ett certifikat kan du få mer detaljerad information med hjälp av det här kommandot:
keytool -v -printcert -file server.crt
Visa certifikat i en Java Keystore
Du kan lista alla certifikat från en Keystore-databas. Kommandot ser ut så här:
keytool -v -list -keystore keystore.jks
Visa Keystore med alias och databas
Om du vill granska en Keystore med hjälp av dess alias (som du angav när du skapade den) skriver du in följande:
keytool -v -list -keystore keystore.jks -alias geekflareserver
Visa certifikat i Keystore
Om du vill granska certifikaten som finns i standard Keystore använder du det här kommandot:
keytool -list -storepass passforkeystore
Kom ihåg att ersätta ”passforkeystore” med det lösenord du valde.
Visa certifikatinformation
Om du behöver granska information om ett specifikt certifikat kan du använda dess alias utan att behöva specificera databasen.
Så här gör du:
keytool -list -v -alias adminvista.com -storepass passforkeystore
Visa certifikat i PEM-format
PEM är ett vanligt format för certifikat och kryptografiska nycklar. För att visa ett certifikat i PEM-format, skriver du in:
keytool -v -printcert -file adminvista.com.crt -rfc
Ändra lösenord för en Java Keystore
Om du redan har ett lösenord för en Java Keystore kan du ändra det med det här kommandot:
keytool -delete -alias adminvista.com -keystore keystore.jks
Radera ett certifikat från en Java Keystore
Du kan ange en Java Keystore och dess alias för att ta bort certifikatet. Exempel:
keytool -delete -alias adminvista.com -keystore keystore.jks
Utforska kommandot och få hjälp
Kommandot har många argument och tillägg för att göra olika saker. Beroende på ditt behov kan det hända att du behöver använda flera av dem.
Om du vill undersöka de olika kommandotillvalen kan du skriva in:
keytool -help
Om du använder en Linux-terminal rekommenderar jag även att du läser man-sidan med det här kommandot:
man keytool
Med kommandot ”man” får du all information du behöver om kommandot keytool.
Så, använd den kunskapen och lär dig så mycket som möjligt om det här kraftfulla verktyget!
Sammanfattning
Sökvägen till filer och andra inställningar kan variera lite beroende på operativsystem. Du kan även hänvisa till Oracles dokumentation för standardinställningar.
Keytool är ett fantastiskt verktyg för många uppgifter. Testa det och se vad du kan göra!
Du kan också utforska några Linux-kommandon för att upprätthålla och optimera systemens funktion.