Come migrare da JKS a PKCS#12

banner

I file JKS (Java KeyStore) sono stati per molto tempo un formato standard per l’archiviazione di chiavi e certificati in Java; tuttavia, sebbene ancora supportato per garantire la retrocompatibilità, il formato PKCS#12 (Personal Information Exchange Syntax Standard) è oggi considerato lo standard preferito e raccomandato per diversi vantaggi in termini di sicurezza, interoperabilità e supporto da parte di strumenti moderni.

Questa guida ti spiegherà come migrare i tuoi file JKS a PKCS#12, un’operazione consigliata per modernizzare la gestione delle tue chiavi.

Chiarimenti sulla ‘Deprecazione’ di JKS

È importante chiarire la terminologia relativa a JKS. Sebbene si possa sentire parlare di ‘deprecazione’, JKS non è stato rimosso dal JDK e continua a funzionare. Piuttosto, PKCS#12 ha assunto il ruolo di formato preferito e raccomandato per la gestione di chiavi e certificati. Questo significa che:

  • JKS è ancora supportato per la retrocompatibilità con sistemi esistenti.
  • Per nuove implementazioni e quando possibile, si consiglia vivamente l’utilizzo di PKCS#12.
  • La migrazione a PKCS#12 offre vantaggi significativi in termini di sicurezza, interoperabilità e supporto da parte di strumenti e standard moderni.

Quindi, la migrazione non è strettamente obbligatoria per sistemi che funzionano correttamente con JKS, ma è una buona pratica per beneficiare dei vantaggi offerti da PKCS#12 e per prepararsi a possibili future evoluzioni degli standard.

Perché Migrare a PKCS#12?

  • Standard Industriale: PKCS#12 è uno standard ampiamente riconosciuto e supportato da diverse piattaforme e applicazioni, non solo Java.
  • Sicurezza Migliore: PKCS#12 offre meccanismi di protezione più robusti rispetto a JKS.
  • Interoperabilità: I file PKCS#12 possono essere facilmente scambiati tra diversi sistemi e applicazioni.
  • Supporto Moderno: Molti strumenti e librerie moderne offrono un supporto migliore per PKCS#12.

Prerequisiti

  • JDK (Java Development Kit) installato (versione 1.6 o successiva, preferibilmente una versione recente per garantire la compatibilità con le ultime funzionalità di sicurezza).
  • Conoscenza della password del keystore JKS.

Procedura di Migrazione

La migrazione da JKS a PKCS#12 si effettua tramite il comando keytool, uno strumento fornito con JDK. Ecco il comando base:

# Struttura del comando che esegue la migrazione da JKS a PKCS#12
keytool -importkeystore \
        -srckeystore <keystore_jks.jks> \
        -destkeystore <keystore_p12.p12> \
        -srcstoretype JKS \
        -deststoretype PKCS12 \
        -srcstorepass <password_jks> \
        -deststorepass <password_p12> \
        -noprompt

Console 1 - Comando di migrazione da JKS a PKCS#12

Analizziamo i parametri:

  • -importkeystore: Indica a keytool di importare un keystore.
  • -srckeystore <keystore_jks.jks>: Specifica il percorso del file JKS di origine.
  • -destkeystore <keystore_p12.p12>: Specifica il percorso del file PKCS#12 di destinazione (che verrà creato).
  • -srcstoretype JKS: Specifica il tipo di keystore di origine (JKS).
  • -deststoretype PKCS12: Specifica il tipo di keystore di destinazione (PKCS#12).
  • -srcstorepass <password_jks>: Specifica la password del keystore JKS di origine.
  • -deststorepass <password_p12>: Specifica la password che si desidera impostare per il nuovo keystore PKCS#12. È fondamentale scegliere una password sicura e ricordarla!
  • -noprompt: Evita che keytool richieda interazioni durante l’esecuzione, utile per script.

Esempio Pratico

Supponiamo di avere un file JKS chiamato mio_keystore.jks con password password e di voler creare un file PKCS#12 chiamato nuovo_keystore.p12 con password nuova_password. Il comando sarà:

# Comando che esegue la migrazione da JKS a PKCS#12
keytool -importkeystore \
        -srckeystore mio_keystore.jks \
        -destkeystore nuovo_keystore.p12 \
        -srcstoretype JKS \
        -deststoretype PKCS12 \
        -srcstorepass password \
        -deststorepass nuova_password \
        -noprompt

# Output del comando
Importing keystore mio_keystore.jks to nuovo_keystore.p12...
Entry for alias amusarra.theredcode.it successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

Console 2 - Esempio di migrazione da JKS a PKCS#12

Gestione degli Alias (Opzionale)

Se nel tuo keystore JKS hai alias diversi e vuoi mantenerli nel file PKCS#12, puoi usare i parametri -srcalias e -destalias. Se non specificati, l’alias viene mantenuto uguale. Per importare tutti gli alias senza doverli specificare uno per uno, puoi omettere questi parametri.

Verifica del File PKCS#12

Dopo la conversione, puoi verificare il contenuto del file PKCS#12 con il seguente comando:

keytool -list -v -keystore <keystore_p12.p12> -storetype PKCS12 -storepass <password_p12>

Console 3 - Comando di verifica del keystore PKCS#12

Questo comando mostrerà i certificati e le chiavi presenti nel keystore. A seguire un esempio di output:

# Output del comando di verifica del keystore PKCS#12
# keytool -list -v -keystore nuovo_keystore.p12 -storetype PKCS12 -storepass nuova_password
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: amusarra.theredcode.it
Creation date: Dec 19, 2024
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=amusarra.theredcode.it, OU=theredcode.it, O=TechWriter, L=Bronte, ST=Italy, C=CT
Issuer: CN=amusarra.theredcode.it, OU=theredcode.it, O=TechWriter, L=Bronte, ST=Italy, C=CT
Serial number: 6b7b11502834c65d8cb5e5059f9b0193df803812
Valid from: Thu Dec 19 16:19:02 CET 2024 until: Fri Dec 19 16:19:02 CET 2025
Certificate fingerprints:
	 SHA1: DD:EA:DC:C3:73:CB:C9:51:97:57:EE:3A:EF:F3:90:EE:C2:9A:CD:8D
	 SHA256: 02:1C:68:77:5A:F6:4A:2A:08:56:D5:51:3F:81:F4:3B:89:82:03:5C:7F:DC:81:73:20:B9:B0:BA:CC:1C:A6:7C
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

Console 4 - Output del comando di verifica del keystore PKCS#12

Risoluzione dei Problemi

  • Password Incorretta: Assicurati di inserire la password corretta per il keystore JKS di origine.
  • Errori di Formato: Verifica che i percorsi dei file siano corretti e che i file esistano.
  • Versioni di JDK: Utilizzare una versione di JDK 1.6 o superiore. Versioni troppo vecchie potrebbero non supportare correttamente PKCS#12.

Conclusione

La migrazione da JKS a PKCS#12 è un processo semplice grazie allo strumento keytool. Seguendo questa guida, potrai modernizzare la gestione delle tue chiavi e certificati, beneficiando dei vantaggi offerti da PKCS#12, il formato preferito per questo scopo.

Se non volessi usare il tool a linea di comando, potresti usare l’ottimo tool KeyStore Explorer, che permette di fare tutto questo e altro attraverso l’uso di una comoda interfaccia grafica.

Ricorda sempre di conservare le password in un luogo sicuro.

Post correlati

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di Coderful

Non perderti gli ultimi aggiornamenti, iscriviti a TheRedCode Digest!

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

#TheRedComics

Edizione di Gennaio - Buon Anno nuovo!

A cura di Sophie Aiello, copy di Chiara Romano

Fumetto di dicembre di Sophie Aiello, Copy di Chiara Romano

Vuoi diventare #tech content creator? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!