Operazioni con i certificati in Java keystore

Il testo che segue è destinato agli utenti che utilizzano il server Apache Tomcat che appone la firma alle applicazioni (gli applet) in Java, e alle operazioni con Java keystore in genere.

Avvertenze: la creazione della CSR per Code Signing è analoga a quella per un certificato di server. Il Common name è identico al nome della tua organizzazione.

Creazione di un keystore e di una coppia di chiavi

Questo comando creerà un nuovo keystore e una coppia di chiavi che utilizzerai per creare la richiesta di certificato. keytool -genkey -alias test -keyalg RSA -keystore test.jks -keysize 3072 Successivamente ti sarà chiesto di inserire la password per il keystore e i dati di specificazione di keystore. I dati inseriti corrisponderanno a quelli presenti nella CSR.

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

Creazione della CSR

La CSR viene creata con il seguente comando:
keytool -certreq -alias test -keystore test.jks -file test.csr Durante la creazione della coppia di chiavi nel passaggio precedente hai già inserito i dati del richiedente, perciò la keytool non li richiede più.

Il parametro -file test.csr serve a eseguire la CSR nel file. Omettendolo, la CSR si leggerà nel terminale e potrai copiarla direttamente nel tuo ordine. Poi non ti resta che attendere l'emissione del certificato.

Importazione del certificato emesso nel keystore

Riceverai dall'SSLmarket il certificato emesso e dovrai trasferirlo nel keystore.

Per importare i certificati, il keystore richiede che il certificato sia affidabile e che l'autorità che lo emette sia già presente nel keystore. Ciò significa che i certificati vengono importati in un "ordine invertito" - da quello di radice a quello di server.

Esegui l'importazione con il comando:
keytool -import -trustcacerts -alias test -file test.txt -keystore test.jks

Error: Failed to establish chain from reply

La richiesta sopraindicata di previa importazione della CA nel keystore provoca un errore frequente keytool error: java.lang.Exception: Failed to establish chain from reply. L'avviso di errore segnala che nel keystore non si trova il certificato Intermediate della CA emettente.

Puoi risolvere questo problema:

  • 1) eseguendo l'importazione nell'ordine invertito, ovvero iniziando con i certificati della CA: keytool -import -trustcacerts -alias root -file intermediate.crt -keystore test.jks
  • 2) importando i certificati nel formato PKCS#7 (P7B). Converti il file linux_cert+ca.pem che hai ricevuto dall'SSLmarket, nel P7B tramite il seguente comando: openssl crl2pkcs7 -nocrl -certfile linux_cert+ca.pem -out linux_cert+ca.p7b e successivamente importa questo file nel keystore:
    keytool -import -trustcacerts -alias test -file linux_cert+ca.p7b -keystore test.jks Il risultato Certificate reply was installed in keystore indica l'importazione riuscita, mentre l'avviso di errore Public keys in reply and keystore don't match indica che nel file P7B manca il certificato del dominio in questione (di server, di endpoint) mentre il certificato Intermediate vi è presente.

  • 3) eventualmente importando il certificato nel formato PKCS#12 (PFX) in cui il tutto è riunito: keytool -importkeystore -srckeystore pkcs12file.p12 -srcstoretype pkcs12 -destkeystore test.jks -deststoretype JKS L'importazione tramite PKCS#12 è la più veloce ma risulta inutile se hai creato la CSR direttamente nel keystore (viene richiesta la sua esportazione).

Strumenti con GUI

Se non vuoi lavorare con il keystore tramite la barra di comando o il terminale, puoi usare uno dei pochi strumenti muniti di interfaccia grafica.

Entrambi i programmi in questione sono in grado di creare o aprire il file del keystore, creare la CSR e reimportare il certificato emesso (risposta dalla CA). La procedura è identica a quella per il terminale di cui sopra; la differenza sta nell'interfaccia grafica in cui puoi eseguire la procedura.

Portecle

Portecle è un programma gratuito in Java che permette di gestire il keystore nell'ambiente grafico. Puoi avviarlo su diverse piattaforme (Linux, MacOS, Windows).

KeyStore Explorer

KeyStore Explorer funziona analogamente al programma precedente e anch'esso è multipiattaforma.

La logica di entrambi i programmi indicati assomiglia però al keystore di origine; in conseguenza, non è detto che ti risparmi più di tanto lavoro.

Ti è stato utile questo articolo?