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.