Creare una keystore da un certificato SSL

Possiamo creare una Keystore a partire da un certificato .cer utilizzando il keytool fornito con le librerie Java

SSL_Certificate

Ho provato a sintetizzare la guida il più possibile, ma più di questo non ho potuto.

Cos’è un Certificato SSL?

Il Certificato SSL è in pratica una chiave di criptaggio che intercorre tra te e il servizio che stai utilizzando o il sito che stai visualizzando. Serve da parte dell’utente per garantire sicurezza laddove c’è un interscambio di dati personali ed evitare che altri possano spiarle mentre le inserite, e da parte del servizio per assicurarsi che chi lo utilizza sia un soggetto materiale esistente, sia essa un’applicazione o una persona. In poche parole, quando andate ad utilizzare un sito https, lì c’è un certificato di criptaggio.

Finché ciò che state utilizzando è un sito internet, a memorizzare e gestire il certificato ci pensa in automatico il vostro browser, ma se quell’url è la destinazione di un servizio che serve a una qualche vostra applicazione che non è un browser, allora per poterlo utilizzare dovete ricorrere alla keystore.

Il Keystore è un contenitore di certificati

La Keystore è praticamente un contenitore di certificati. Ogni certificato, che è possibile salvare in un file in formato .crt o .cer, può essere inserito ed individuato all’interno della Keystore tramite un alias. Senza il keystore la vostra applicazione non riuscirà mai ad utilizzare il servizio interessato, a patto che non sia in grado di “assorbire” automaticamente un certificato come fa un browser web, e riceverete errori come questo

keytool error: java.lang.Exception: Input not an X.509 certificate

java.lang.Exception: Input not an X.509 certificate

at sun.security.tools.KeyTool.addTrustedCert(KeyTool.java:1913)

at sun.security.tools.KeyTool.doCommands(KeyTool.java:818)

at sun.security.tools.KeyTool.run(KeyTool.java:172)

at sun.security.tools.KeyTool.main(KeyTool.java:166)

nel caso state utilizzando un certificato che non va bene, oppure questo

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

Preciso che il procedimento è valido per chi utilizza Windows (io sto usando al momento Windows 8.1, ma penso che valga anche per le altre versioni), su altri sistemi operativi non ho ancora provato.

Procediamo.

Scarichiamo il certificato

La prima cosa che dobbiamo fare è procurarci il certificato che dobbiamo andare ad inserire nella nostra Keystore.

Esistono vari tool che permettono di scaricare velocemente certificati SSL, ma a me non piacciono né le strade semplici, né l’uso di applicativi esterni non necessari.

Apriamo, quindi, Internet Explorer e rechiamoci all’url https dove si trova il servizio che dobbiamo richiamare. Comparirà sulla destra della barra dell’url un lucchettino

url_ssl_64564654351

dobbiamo cliccarci sopra, e selezionare il comando in basso Visualizza certificati

03_certificato

(non fate caso al contenuto delle informazioni del certificato, sto usando quelli di Google per mostrare gli screenshot guida)

Dopo aver cliccato su Visualizza certificati si aprirà una finestra, selezioneremo la scheda Percorso certificazione e andremo a leggere il nome preciso del certificato, e salviamocelo, perché ci servirà per riconoscerlo durante l’esportazione.

04_keystore

Andiamo a questo punto su Impostazioni > Opzioni Internet

05_keystore

e dalla finestra che si aprirà andremo a selezionare la scheda Contenuto quindi cliccheremo sul pulsante Certificati

06_keystore

dalla finestra che si aprirà dobbiamo andare a cercare il certificato che ci interessa tra le varie schede, e lo andremo ad identificare tramite il nome che abbiamo prima salvato, quindi lo andremo a selezionare e cliccheremo sul comando Esporta…

11_keystore

Si avvierà il procedimento di esportazione certificati, bisogna andare sempre avanti facendo attenzione a creare un certificato DEX x.509 in formato .cer, e salvatelo dove più può farvi comodo.

Creiamo la nostra Keystore

Possiamo crearne una nuova oppure inserire il certificato in una keystore esistente, bisogna solo utilizzare un alias non già utilizzato in precedenza. Questo serve nel caso il nostro applicativo abbia necessità di connettersi a più di un servizio.

Apriamo il prompt dei comandi, e andiamo a posizionarci nella cartella bin che si trova nella cartella del jdk che avete installato

00_ketool

in questa cartella si troverà il keytool.exe che ci servirà per creare o aggiornare la keystore. Andiamo quindi a scrivere questo comando

keytool -import -v -trustcacerts -alias [nome alias] -file [percorso file .cer] -keystore [percorso file .keystore]

andando ad inserire il nome dell’alias, il percorso del certificato e il percorso del keystore.

Fare solo attenzione alla password della keystore, perché se già esiste e dovete solo aggiornarla, dovrete conoscerla, se invece il file .keystore non esiste quella che andrete ad inserire sarà la password che verrà applicata.

Offrimi un caffè su ko-fi.com
Controlliamo randomicamente il funzionamento dei link nei nostri articoli. Nel frattempo, se dei link risultano corrotti segnalacelo tra i commenti, li correggeremo. Grazie.

Francesco

Fondatore e amministratore di Dummy-X dal 2007, condivido interessi, idee, progetti, e soluzioni informatiche. Non vendo prodotti, mi limito a descrivere tecnologie e a mettere a disposizione gli strumenti adatti per poter realizzare idee. Tutto ciò che scrivo è frutto della mia esperienza lavorativa e della mia voglia di imparare. Da sempre studio l'informatica in tutte le sue angolazioni (software, hardware, reti e sicurezza) e negli ultimi anni mi sono specializzato nello sviluppo di web applications. Sono sempre aperto a nuove sfide e alla ricerca e conoscenza delle nuove tecnologie.
 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *