17 exemple de comenzi Keytool pe care să le cunoașteți ca administrator de sistem și dezvoltator

Keytool este o utilitate de linie de comandă care facilitează gestionarea și stocarea elementelor de securitate, precum cheile criptografice și certificatele digitale.

În cazul în care aveți Java instalat pe sistem, puteți utiliza comanda keytool pentru a realiza diverse acțiuni: importarea certificatelor de autoritate de certificare (CA), vizualizarea listelor de certificate, crearea de certificate autosemnate, gestionarea parolelor și a perechilor de chei publice/private, precum și multe alte operațiuni.

Vă simțiți copleșit? Nu vă faceți griji; voi explica totul într-un mod mai accesibil pe măsură ce avansați în lectură.

Rețineți că folosesc sistemul de operare Linux pentru testarea comenzilor și pentru a oferi exemple concrete.

Comenzile Keytool pot fi utilizate și pe platformele Windows și macOS.

Ce reprezintă o comandă Keytool?

Este un instrument destinat administrării cheilor și certificatelor. Aceasta permite stocarea perechilor de chei private și publice, utilizate de obicei pentru verificarea și autentificarea accesului la diferite servicii.

Având în vedere subiectul acestui articol, se poate presupune că această comandă este utilizată în principal de administratori de sistem și dezvoltatori.

În general, aceasta este situația. Cu toate acestea, utilizatorii avansați pot folosi keytool pentru a stoca parole și chei secrete în scopuri de autentificare, criptare și decriptare. Așadar, dacă sunteți curios, vă invit să o încercați pe sistemul dvs.

În cazul în care sunteți nou în domeniul cheilor criptografice, vă recomand să citiți articolul nostru despre criptarea datelor înainte de a utiliza comenzile keytool.

De asemenea, consultarea unor exemple de comenzi OpenSSL vă poate oferi o perspectivă asupra diferențelor și a utilității fiecărui instrument.

Generarea unui certificat autosemnat

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

Spre deosebire de un certificat SSL achiziționat, un certificat autosemnat este folosit exclusiv în scopuri de dezvoltare și testare, pentru a stabili o conexiune securizată.

Puteți genera un astfel de certificat folosind sintaxa comenzii keytool prezentată mai sus. De exemplu, iată cum ar arăta o comandă concretă:

keytool -genkeypair -alias tipstrick.ro -keypass parola_keystore -validity 365 -storepass parola_keystore

Puteți utiliza orice nume doriți pentru alias; eu folosesc tipstrick.ro ca substituent. De asemenea, puteți configura valabilitatea și specifica o parolă pentru depozitul de chei, înlocuind „parola_keystore” din comanda de mai sus.

Rețineți că doar o singură parolă este permisă pentru Keystore-urile PKCS12. Acesta este un tip de Keystore convenabil, care nu este specific Java.

Dacă aveți nevoie de două parole diferite pentru depozitul de chei și pentru certificat, va trebui să indicați explicit comenzii keytool să folosească o altă interfață.

Pentru mai multe informații, puteți consulta documentația oficială.

Odată ce începeți procesul de creare, vi se vor solicita detalii suplimentare pentru autentificare. Iată un exemplu:

What is your first and last name?
    [Unknown]:  Ankush
What is the name of your organizational unit?
    [Unknown]:  tipstrick.ro
What is the name of your organization?
    [Unknown]:  tipstrick.ro
What is the name of your City or Locality?
    [Unknown]:  Bucuresti
What is the name of your State or Province?
    [Unknown]:  Bucuresti
What is the two-letter country code for this unit?
    [Unknown]:  RO
Is CN=Ankush, OU=tipstrick.ro, O=tipstrick.ro, L=Bucuresti, ST=Bucuresti, C=RO correct?
    [no]:  yes

Crearea unui depozit de chei Java și a unei perechi de chei

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

Generarea unui depozit de chei Java și importarea unui certificat

Asigurați-vă că aveți un certificat valid sau că ați generat unul anterior; după aceasta, îl puteți importa pentru a genera un depozit de chei Java.

keytool -importcert -file test.crt -keystore truststore.jks -alias tipstrick.ro

Generarea unei perechi de chei în depozitul de chei implicit cu subiect

Puteți genera rapid o pereche de chei (de exemplu, cu numele „ca”) utilizând următoarea comandă:

keytool -alias ca -dname CN=CA -genkeypair

Crearea unui lanț de certificate semnate

Să presupunem că ați creat perechi de chei denumite „ca” și „ca1”. Puteți crea un lanț de certificate semnate, în care „ca” va semna „ca1”, utilizând următoarele comenzi:

keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert

Puteți extinde lanțul adăugând alte perechi de chei, cum ar fi „ca1” și „ca2”, unde „ca1” va semna „ca2”.

Importul unui certificat

Dacă doriți să importați un certificat dintr-un fișier, iată cum procedați:

keytool -import -alias tipstrick.ro -file geekflareserver.cer

Generarea unei cereri de semnare a certificatului (CSR) pentru depozitul de chei existent

Dacă aveți deja creat un depozit de chei, puteți genera un CSR.

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

Afișarea certificatelor stocate în depozitul de chei Java

Un depozit de chei poate conține mai multe intrări de certificate. Presupunând că dorim să verificăm lista de certificate din baza de date „keystore.jks”, vom folosi următoarea comandă:

keytool -v -list -keystore keystore.jks

Rezultatul acestei comenzi va fi similar cu următorul:

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=tipstrick.ro, L=Bucuresti, ST=Bucuresti, C=RO
Issuer: CN=Ankush, OU=Geek, O=tipstrick.ro, L=Bucuresti, ST=Bucuresti, C=RO
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

Verificarea conținutului unui singur certificat

Având deja un certificat generat, puteți verifica mai multe informații despre acesta folosind următoarea comandă:

keytool -v -printcert -file server.crt

Vizualizarea certificatelor dintr-un depozit de chei Java

Puteți afișa toate certificatele dintr-o bază de date Keystore. Iată comanda corespunzătoare:

keytool -v -list -keystore keystore.jks

Vizualizarea depozitului de chei folosind un alias și un depozit de chei

Dacă doriți să verificați un depozit de chei folosind numele de alias pe care l-ați setat la crearea sa, introduceți următoarea comandă:

keytool -v -list -keystore keystore.jks -alias geekflareserver

Afișarea certificatelor din KeyStore

Dacă doriți să verificați certificatele stocate în depozitul de chei implicit, utilizați această comandă:

keytool -list -storepass parola_keystore

Trebuie să înlocuiți „parola_keystore” cu parola pe care ați setat-o.

Vizualizarea informațiilor despre un certificat

Pentru a verifica detaliile unui singur certificat, puteți utiliza aliasul acestuia fără a specifica baza de date keystore.

Comanda arată astfel:

keytool -list -v -alias tipstrick.ro -storepass parola_keystore

Vizualizarea unui certificat în format PEM

PEM este unul dintre cele mai comune formate pentru certificate și chei criptografice. Pentru a verifica un certificat în format PEM, utilizați următoarea comandă:

keytool -v -printcert -file tipstrick.ro.crt -rfc

Modificarea parolei unui depozit de chei Java

Dacă ați creat deja o parolă pentru un depozit de chei Java, o puteți schimba folosind următoarea comandă:

keytool -delete -alias tipstrick.ro -keystore keystore.jks

Ștergerea unui certificat dintr-un depozit de chei Java

Puteți specifica depozitul de chei Java și aliasul certificatului pe care doriți să-l ștergeți. De exemplu:

keytool -delete -alias tipstrick.ro -keystore keystore.jks

Explorarea comenzii și obținerea de ajutor

Comanda keytool dispune de numeroase argumente și opțiuni pentru diverse operațiuni. În funcție de cazul de utilizare, s-ar putea să nu fie nevoie să le utilizați pe toate.

Dacă doriți să aprofundați opțiunile comenzii, puteți tasta:

keytool -help

Dacă utilizați un terminal Linux, vă recomand să citiți pagina de manual („man page”) pentru această comandă:

man keytool

Cu ajutorul comenzii „man”, puteți obține toate detaliile necesare despre comanda keytool.

Astfel, veți avea la îndemână superputerea de a înțelege totul despre ea!

Concluzia

Calea fișierelor și alte opțiuni de personalizare ar putea varia ușor în funcție de platforma pe care o utilizați. Puteți consulta și documentația Oracle pentru informații despre opțiunile standardizate.

Keytool este un instrument excelent pentru o varietate de sarcini. Testați-l și vedeți ce puteți face cu el!

De asemenea, puteți explora câteva comenzi Linux pentru a menține sistemele funcționale la parametri optimi.