Laboratorio

Modulo 16 - Creazione e mantenimento di un sito Web

Esperienza di una infrastruttura PKI con OpenSSL

Questa esercitazione è contenuta nel tarball (40KB) dove sono presenti tutti i file per la costruzione e configurazione dell'esperimento. Dopo aver settato correttamente l'ambiente Netkit lancia lo script:

user@realhost$ ./lab start

Nel file system delle macchine virtuali da noi usate ci sono già tutti i pacchetti necessari. Nel caso di una macchina reale occorre invece installare il pacchetto openssl e anche il pacchetto wipe per la cancellazione affidabile dei files dai mezzi magnetici (nel nostro caso virtuale non serve anche perchè funziona solo se il supporto è magnetico).

La descrizione della struttura a livello di filesystem usata da openssl è la seguente:

/etc/ssl/openssl.cnf           master configuration file
./demoCA                       main CA directory
./demoCA/cacert.pem            CA certificate
./demoCA/private/cakey.pem     CA private key
./demoCA/serial                CA serial number file
./demoCA/serial.old            CA serial number backup file
./demoCA/index.txt             CA text database file
./demoCA/index.txt.old         CA text database backup file
./demoCA/certs                 certificate output file

Sono state fatte due leggere modifiche nei file di configurazione:

In seguito generiamo i certificati e le chiavi per la nostra Certification Authority (CA) con il comando (password umts4tic):

root@PKI# /usr/lib/ssl/misc/CA.pl -newca

rispondendo come segue alle domande:

Country Name [IT]:
State or Province Name [Italy]:
Locality Name [Mestre-Venezia]:
Organization Name [MIUR]:
Organizational Unit Name [R&D]:
Common Name []:ca.istituto.it
Email Address []:ca@istituto.it

Per vedere i dettagli del certificato appena generato:

root@PKI# openssl x509 -noout -text -in ./demoCA/cacert.pem

Per vedere i dettagli della chiave appena generata:

root@PKI# openssl rsa -noout -text -in ./demoCA/private/cakey.pem

Tutti i dati verranno salvati all'interno della directory demoCA che viene automaticamente costruita all'interno della directory corrente. La passwd della CA è umts4tic.

Passiamo ora a generare i certificati e le chiavi per coprire il nostro fabbisogno. Ogni identità che vuole/deve generare la propria coppia di chiavi ha l'obbligo di custodire la chiave primaria in un luogo sicuro e può memorizzarla ad esempio in una smart card. La CA non si renderà depositoria delle chiavi private degli utenti e metterà massima cura nella conservazione della propria chiave privata utilizzata per certificare i propri utenti.

Un utente che vuole generare una coppia di chiavi utilizzando OpenSSL deve dare i seguenti comandi:

$ /usr/lib/ssl/misc/CA.pl -newreq

Eventualmente per decodificare la richiesta di certificato appena generata:

$ openssl req -text -noout > newreq.pem

Ora si consegna il certificato alla CA che lo firmerà:

root@PKI# /usr/lib/ssl/misc/CA.pl -sign

Troveremo il certificato firmato nel file newcert.pem. In seguito sarà compito della CA mettere a disposizione i certificati da lei firmati così come la lista dei certificati revocati.

Nel caso in cui volessimo costruire la richiesta di certificato senza usare lo script CA.pl occorrerebbe prima generare le chiavi e poi il certificato secondo i seguenti comandi:

$ openssl genrsa -des3 -out user.key 1024
$ openssl req -new -key user.key -out user.csr
$ cat  user.key user.csr > newreq.pem

I certificati sono tutti protetti da password e quindi se sono usati all'interno di servizi WEB causano la richiesta, allo startup del servizio, della digitazione della password. Per ovviare a questo problema è possibile rimuovere la cifratura del certificato con il comando:

$ openssl rsa < newreq.pem > newkey.pem

Revoca

Per revocare un certificato:

root@PKI# openssl ca -revoke cert.pem

per generare la lista dei certificati revocati:

root@PKI# openssl ca  -gencrl -out file.crl

per vederne i dettagli:

root@PKI# openssl crl -noout -text -in file.crl

Esportazione per Browser/MUA

Per trasformare un certificato in un file importabile da un browser:

$ openssl pkcs12 -export -in demoCA/newcerts/01.pem \
          -inkey demoCA/private/01.pem \
          -certfile demoCA/cacert.pem \
          -name "OpenCA Digital Certificate" -out mycert.p12

Cancellazione database

Nel caso reale dovremmo cancellare i dati dal supporto magnetico con:

root@PKI# wipe -r demoCA *.pem

e terminare la sessione sull'host PKI.

I certificati del dominio "istituto.it"

Questa esercitazione è usata anche come base per le altre esercitazioni che hanno bisogno di certificati digitali. In questa sezione indichiamo i parametri per la costruzione dei seguenti certificati all'interno del dominio istituto.it:

dove le password dei certificati sono rispettivamente i nomi (non FQDN) degli host stessi. Nel file CA-istituto.it.tgz è stata salvata la directory demoCA che contiene il database. Se dobbiamo/vogliamo costruire altri certificati nel dominio basta aprire il file e procedere nel costruire i certificati e a firmarli. Il certificato della CA ha scadenza l'8 Aprile 2015 e gli altri hanno scadenza il 9 Aprile 2008 (lunga vita a Netkit4TIC!).

Creative Commons License FREE THE MOUSE Valid HTML! Sandro Doro (email me)
Ultima modifica: $Date: 2005-05-07 18:28:14 $