Esercitazione Certificati


1. Esercizio: Creazione del Keystore

Obiettivo di questo esercizio è creare un certificato per il servizio di shopping ed uno per il client. I certificati saranno selfsigned ed inclusi in un keystore criptato.

Step 1. Creazione del certificato. Creiamo il certificato usando il comando:

keytool -genkey -alias shopping -keystore shopping.jks -keyalg RSA

Saranno richieste alcune informazioni, come le password di cifratura e i metadati del certificato.

[Importante] Importante

Quando un'applicazione Java invoca una URL in HTTPS, viene verificato che il CommonName (CN) del certificato, che in italiano viene tradotto come Nome e Cognome, sia uguale all'Hostname contattato per evitare attacchi di spoofing. Nel nostro caso l'Hostname del servizio Shopping è localhost, quindi il certificato del servizio DEVE avere questo CN.

[Importante] Importante

Per una limitazione della JVM, certificato privato e keystore devono avere la stessa password di cifratura. Quando viene richiesta, non inserirla per utilizzare la stessa.

[lai@unipi]$ keytool -genkey -alias shopping -keystore shopping.jks -keyalg RSA Immettere la password del keystore: ****** Immettere nuovamente la nuova password: ****** Specificare nome e cognome [Unknown]: localhost Specificare il nome dell'unità organizzativa [Unknown]: LAI Specificare il nome dell'organizzazione [Unknown]: Unipi Specificare la località [Unknown]: Pisa Specificare la provincia [Unknown]: Pisa Specificare il codice a due lettere del paese in cui si trova l'unità [Unknown]: IT Il dato CN=localhost, OU=LAI, O=Unipi, L=Pisa, ST=Pisa, C=IT è corretto? [no]: si Immettere la password della chiave per <shopping> (INVIO se corrisponde alla password del keystore):

Step 2. Verifica del certificato. Verifichiamo che il keystore appena creato contenga una chiave privata riferita con alias shopping emessa da noi stessi (autofimato).

[lai@unipi]$ keytool -list -v -keystore shopping.jks Immettere la password del keystore: ****** Tipo keystore: JKS Provider keystore: SUN Il keystore contiene 1 voce Nome alias: shopping Data di creazione: 20-mag-2015 Tipo di voce: PrivateKeyEntry Lunghezza catena certificati: 1 Certificato[1]: Proprietario: CN=localhost, OU=LAI, O=Unipi, L=Pisa, ST=Pisa, C=IT Autorità emittente: CN=localhost, OU=LAI, O=Unipi, L=Pisa, ST=Pisa, C=IT Numero di serie: 358d63b3 Valido da: Wed May 20 12:36:47 CEST 2015 a: Tue Aug 18 12:36:47 CEST 2015 Impronte digitali certificato: MD5: 20:E8:CE:44:53:0B:4F:90:75:CC:54:DB:87:98:0C:D6 SHA1: 1D:08:4B:A9:C9:1C:C4:6B:9D:41:B2:F2:72:C8:B4:BF:B0:DF:5F:71 SHA256: 2B:86:74:6B:BE:6D:C2:BF:D7:0D:DF:13:BF:03:40:33:34:47:E5 Nome algoritmo firma: SHA1withRSA Versione: 3 ....

Step 3. Keystore per il Client. Ripetere i due step precedenti per creare il keystore client.jks con un certificato selfsigned con CN=client e alias client.

2.Esercizio: Creazione del Truststore

Obiettivo di questo esercizio è creare un trustore contenente il certificato pubblico del servizio di shopping. da utilizzare nei client.

Step 1. Estrazione della chiave pubblica del servizio shopping. Estraiamo il certificato usando il comando:

keytool -export -alias shopping -keystore shopping.jks -file shopping.cert

Step 2. Importazione nel keystore del client. Importiamo il certificato in un nuovo keystore da utilizzare nel client come trustore:

keytool -import -keystore client.jks -file shopping.cert -alias shopping

e verifichiamo che contenga entrambe le entry

[lai@unipi]$ keytool -list -keystore client.jks Immettere la password del keystore: ****** Tipo keystore: JKS Provider keystore: SUN Il keystore contiene 2 voci client, 20-mag-2015, PrivateKeyEntry, Impronta digitale certificato (SHA1): 3C:A0:F2:CB:FA:43.... shopping, 20-mag-2015, trustedCertEntry, Impronta digitale certificato (SHA1): 94:8E:B0:28:FA:1A.... ...

Step 3. Truststore per il servizio. Ripetere i due step precedenti per estrarre il certificato pubblico del client e aggiungerlo al keystore shopping.jks

Footer BGFooter BG
Tito Flagella - © 2007-2015