Esportare e visualizzare il certificato a chiave pubblica
La creazione del keystore tramite il comando mostrato nel capitolo precedente ha portato alla generazione di un certificato a chiave pubblica self-signed. Possiamo esportare il certificato della Microsystems Inc contenuto nel keystore attraverso l'opzione -export
:
keytool -export -alias "Microsystems Inc" -file microsystems-inc.crt -keystore keystore.jks
Il formato PEM è il formato più comune utilizzato per i certificati. Le estensioni utilizzate per i certificati PEM sono cer, crt e pem. Si tratta di file ASCII codificati Base64.
Evidenziamo inoltre anche il formato DER che rappresenta il modulo binario del certificato. I certificati formattati DER non contengono le dichiarazioni "BEGIN CERTIFICATE / END CERTIFICATE
".
Per visualizzare il contenuto del certificato esportato, facciamo uso ancora del keytool con l'opzione -printcert
:
keytool -printcert -v -file microsystems-inc.crt
Generare una Certificate Signing Request (CSR)
In precedenza abbiamo generato un certificato auto firmato utile in fase di sviluppo e test di un sistema informativo. Quando il nostro sistema deve andare in esecuzione abbiamo la necessità che il certificato sia firmato da un'autorità di certificazione che garantisca che il certificato in questione sia effettivamente di proprietà della Microsystem Inc.
Il Keytool permette di raggiungere questo obiettivo attraverso la generazione di una Certificate Signing Request o CSR:
keytool -certreq -alias "Microsystems Inc" -keystore keystore.jks -file microsystems-inc.csr
Il precedente comando ha generato la richiesta di cui abbiamo bisogno producendo un file CSR. A questo punto la Microsystems Inc invierà il file, insieme ai suoi dati identificativi, a una Certification Authority (CA), rimanendo successivamente in attesa del certificato a chiave pubblica da essa firmato.
Una volta ottenuto il certificato, con il comando che segue, la Microsystems Inc sovrascrive il certificato self-signed presente nel suo keystore:
keytool -import -keystore keystore.jks -file microsystems-inc-response.crt -alias "Microsystems Inc"
Un'aspetto importante da evidenziare è l'assunzione, nell'esecuzione dei comandi precedenti, che il certificato pubblico della CA scelta sia già presente nel keystore o all'interno del file cacerts
presente nel percorso $JAVA_HOME/jre/lib/security
.
La mancanza del certificato o della catena di certificati che fa capo a un CA avrebbe prodotto un errore nel comando d'importazione. Il file cacerts
contiene i certificati di terze parti ritenuti affidabili.
Una CA può emettere un certificato anche per un'altra CA, in modo da creare catene gerarchiche di certificati. Controllare la validità di un certificato comporta risalire la sua catena di autorizzazioni.
In cima alla catena gerarchica è presente una Root CA che possiede un certificato self-signed. I browser sono configurati per dare fiducia a un insieme di CA note contenendo quindi dei root certificate.