- Documentazione ufficiale
- Guide della comunità
- 12.04 LTS

web wiki forum planet
help.ubuntu-it comunità italiana

- Desktop
- Server
- Ricerca

Questa guida non è stata ancora completamente tradotta. Se vuoi contribuire alla sua traduzione contatta il Gruppo Traduzione di Ubuntu-it.
Guida a Ubuntu Server » Sicurezza »
Indietro | Avanti

# Certificati

Una delle più comuni forme di crittografia odierna è la crittografia a chiave pubblica. Questo tipo di crittografia utilizza una chiave pubblica e una chiave privata. Il sistema funziona cifrando le informazioni usando la chiave pubblica che possono solo essere decifrate con la chiave privata.

L'utilizzo più comune della crittografia a chiave pubblica è nella cifratura del traffico delle applicazioni attraverso una connessione SSL (Secure Socket Layer) o TLS (Transport Layer Security), per esempio configurando Apache affinché fornisca HTTPS, il protocollo HTTP via SSL. Questo consente di cifrare il traffico utilizzando un protocollo che non fornisce nativamente una cifratura.

Un certificato è un metodo di distribuzione di una chiave pubblica e di altre informazioni riguardo un server e l'organizzazione che ne è responsabile. I certificati possono essere firmati digitalmente a un'Autorità di Certificazione o CA. Una CA è un'entità fidata che conferma la veridicità delle informazioni contenute nel certificato.

- Tipologie dei certificati
- Generare una CSR (Certificate Signing Request)
- Creare un certificato auto-firmato
- Installare il certificato
- Autorità di Certificazione
- Riferimenti

## Tipologie dei certificati

Per configurare un server sicuro affinché usi la crittografia a chiave pubblica, nella maggior parte dei casi, è necessario inviare la richiesta del certificato (compresa la chiave pubblica), una prova di esistenza della propria società e il pagamento a una CA. La CA verifica la richiesta e la propria identità e quindi invia un certificato per il proprio server. In alternativa, è possibile creare il proprio certificato auto-firmato.

I certificati auto-firmati non dovrebbero essere usati in ambienti di produzione.

Continuando l'esempio di HTTPS, un certificato CA firmato dispone di caratteristiche che un certificato auto-firmato non ha:

- I browser, solitamente, riconoscono automaticamente il certificato e consentono l'attivazione di una connessione sicura senza chiedere nulla all'utente.

- Quando una CA emette un certificato, garantisce l'identità dell'organizzazione che fornisce la pagina web al browser.

La maggior parte dei browser web, e dei computer che supportano SSL, dispongono di un elenco di CA i cui certificati sono accettati automaticamente. Se un browser incontra un certificato la cui CA non è presente nell'elenco, il browser chiede all'utente di accettare o rifiutare la connessione. Inoltre, altre applicazioni possono generare un messaggio di errore quando viene usato un certificato auto-firmato.

Il processo per ottenere un certificato da una CA è molto semplice. Un piccolo promemoria:

1. Creare un coppia di chiavi pubblica e privata.

2. Creare una richiesta per un certificato basato su chiave pubblica. La richiesta del certificato contiene informazioni riguardo il server a la società che lo ospita.

3. Inviare la richiesta, con una fotocopia di un documento di identità, a una CA. Non è possibile consigliare quale autorità di certificazione scegliere. La decisione potrebbe essere basata su esperienze passate, esperienze di amici o colleghi o per un fattore economico.

   Una volta scelta la CA, è necessario seguire le istruzioni fornite dal CA per ottenere il certificato.

4. Una volta che la CA ha verificato l'identità del richiedente, invierà un certificato digitale.

5. Installare questo certificato sul proprio server sicuro e configurare le applicazioni appropriate affinché usino il certificato.

## Generare una CSR (Certificate Signing Request)

Sia che si stia ottenendo un certificato da una CA sia che si auto-firmi il proprio, il primo passo consiste nel generare una chiave di cifratura.

Se il certificato verrà usato da servizi come Apache, Postfix, Dovect, ecc..., è solitamente indicato usare una chiave priva di passphrase.

Questa sezione indica come generare una chiave dotata di passphrase e una priva di passphrase. La chiave priva di passphrase verrà impiegata per generare un certificato che può essere usato da diversi servizi.

Avere in esecuzione i servizi senza una passphrase è conveniente poiché non vi è la necessità di digitare la passphrase a ogni avvio del servizio, ma non è molto sicuro in quanto se la chiave viene compromessa, verrà compromesso anche il server.

Per generare le chiavi per la CSR (Certificate Signing Request), eseguire in un terminale il seguente comando:

    openssl genrsa -des3 -out server.key 2048

    Generating RSA private key, 2048 bit long modulus
    ..........................++++++
    .......++++++
    e is 65537 (0x10001)
    Enter pass phrase for server.key:

È ora necessario inserire una passphrase. Per una maggiore sicurezza, dovrebbe contenere almeno 8 caratteri. La lunghezza minima con l'opzione «-des3» è di 4 caratteri. Dovrebbe includere numeri o segni di punteggiatura e non dovrebbe essere una parola reperibile in un vocabolario. Ricordarsi che una passphrase differenzia tra minuscole e maiuscole.

Digitare nuovamente la passphrase per la verifica. Una volta digitata correttamente, la chiave per il server viene generata e archiviata nel file server.key.

Creare la chiave insicura, quella priva di passphrase, e scambiare i nomi delle chiavi:

    openssl rsa -in server.key -out server.key.insecure
    mv server.key server.key.secure
    mv server.key.insecure server.key

La chiave insicura è ora chiamata server.key ed è possibile usare questo file per generare la CSR senza passphrase.

Per creare il CSR, eseguire il seguente comando:

    openssl req -new -key server.key -out server.csr

It will prompt you enter the passphrase. If you enter the correct passphrase, it will prompt you to enter Company Name, Site Name, Email Id, etc. Once you enter all these details, your CSR will be created and it will be stored in the server.csr file.

È ora possibile inviare il file della CSR alla CA che lo utilizzerà per creare il certificato finale. È comunque possibile creare un certificato auto-firmato utilizzando questa CSR.

## Creare un certificato auto-firmato

Per creare un certificato auto-firmato, eseguire da un terminale il seguente comando:

    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Il comando precedente chiederà la passphrase. Una volta digitata correttamente, il certificato viene creato e sarà disponibile nel file server.crt.

Se il server deve essere utilizzato in ambito commerciale, è necessario un certificato emesso da una CA. Non è raccomandato utilizzare un certificato auto-firmato.

## Installare il certificato

È possibile installare il file server.key e quello del certificato server.crt, o il file del certificato fornito dalla CA, eseguendo, in un terminale, i seguenti comandi:

    sudo cp server.crt /etc/ssl/certs
    sudo cp server.key /etc/ssl/private

Ora basta configurare le applicazioni che possono usare la crittografia a chiave pubblica affinché utilizzino i file del certificato e della chiave. Per esempio, Apache può fornire HTTPS, Dovecot può fornire IMAPS e POP3S ecc...

## Autorità di Certificazione

Se i servizi all'interno della propria rete richiedono più di un certificato auto-firmato, potrebbe essere utile impostare una Autorità di Certificazione personale. Usando certificati firmati dalla propria CA, consente ai vari servizi che usano tali certificati di fidarsi di altri servizi che fanno uso di certificati emessi dalla stessa CA.

1. Per prima cosa, creare le directory che conterranno il certificato della CA e i file relativi

       sudo mkdir /etc/ssl/CA
       sudo mkdir /etc/ssl/newcerts

2. La CA necessita di alcuni altri file per funzionare correttamente: uno per tenere traccia dell'ultimo numero seriale usato (ogni certificato deve avere un numero univoco) e l'altro per registrare quali certificati sono stati emessi:

       sudo sh -c "echo '01' > /etc/ssl/CA/serial"
       sudo touch /etc/ssl/CA/index.txt

3. Il terzo file è il file di configurazione della CA. Benché non strettamente necessario, è molto utile quando vengono emessi certificati multipli. Aprire il file /etc/ssl/openssl.cnf e nella sezione [ CA_default ] modificare:

       dir             = /etc/ssl/             # Dove viene salvato tutto
       database        = $dir/CA/index.txt     # File indice del database
       certificate     = $dir/certs/cacert.pem # Il certificato della CA
       serial          = $dir/CA/serial        # Il numero seriale corrente
       private_key     = $dir/private/cakey.pem# La chiave privata

4. Creare il certificato auto-firmato principale:

       openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

   Viene chiesto di inserire i dettagli del certificato.

5. Installare il certificato principale e la chiave:

       sudo mv cakey.pem /etc/ssl/private/
       sudo mv cacert.pem /etc/ssl/certs/

6. È ora possibile firmare i certificati. La prima cosa necessaria è una CSR (Certificate Signing Request), consultare Generare una CSR (Certificate Signing Request). Una volta ottenuta, digitare quanto segue per generare un certificato firmato dalla CA:

       sudo openssl ca -in server.csr -config /etc/ssl/openssl.cnf

   Inserita la passoword della chiave CA, viene chiesto di firmare il certificato e di generare quello nuovo. Dovrebbe quindi essere visibile l'output della generazione del certificato stesso.

7. There should now be a new file, /etc/ssl/newcerts/01.pem, containing the same output. Copy and paste everything beginning with the line: -----BEGIN CERTIFICATE----- and continuing through the line: ----END CERTIFICATE----- lines to a file named after the hostname of the server where the certificate will be installed. For example mail.example.com.crt, is a nice descriptive name.

   Tutti i certificati successivi saranno chiamati 02.pem, 03.pem, ecc...

   Sostituire mail.example.it.crt con un nome descrittivo appropriato al proprio caso.

8. In fine, copiare il nuovo certificato nell'host e configurare le applicazioni al suo uso. La posizione predefinita per l'installazione dei certificati è /etc/ssl/certs, consentendo così a molteplici servizi di usare lo stesso certificato senza complicare inutilmente i permessi.

   Per le applicazioni che possono essere configurate all'uso di un certificato di una CA, è necessario copiare il file /etc/ssl/certs/cacert.pem nella directory /etc/ssl/certs/ di ogni server.

## Riferimenti

- Per ulteriori informazioni sull'utilizzo della crittografia, consultare lo SSL Certificates HOWTO.

- La pagina Wikipedia HTTPS dispone di ulteriori informazioni riguardo HTTPS.

- Per maggiori informazioni riguardo OpenSSL, consultare il sito web di OpenSSL.

- Inoltre, il libro Network Security with OpenSSL di O'Reilly è un ottimo punto di riferimento.

Indietro | Avanti