Richiesta di un certificato per un server

Certificati per server Apache

Queste istruzioni sono relative alla richiesta di un certificato per l'attivazione del protocollo HTTPS (HTTP su SSL) per un server Apache 1.3.

Prerequisiti:

  1. installare il modulo mod_ssl (di solito già presente nelle distribuzioni classiche) o installare la versione Apache-SSL (le differenze tra le due opzioni sono indicati nelle FAQ di mod_ssl). Una guida all'installazione di Apache-SSL è disponbile sul sito del Dipartimento di Informatica e Applicazioni dell'Università di Salerno;
  2. generare la coppia di chiavi e la richiesta di certificato con OpenSSL:

    scaricate il file di configurazione di OpenSSL per i server CSITA o per i server di struttura. Lanciate il comando:



    openssl req -new -out server.csr -keyout server.pem -config csita-ssl.cnf



    Verrà richiesta la PEM pass phrase; trascrivetela in un posto sicuro, perchè la chiave non è più utilizzabile senza la pass phrase.

    Alla richiesta del nome DNS del server, rispondete con il Fully Qualified Domain Name (cioé con tutte le parti, es. www.csita.unige.it) dell'host. Il nome DNS dev'essere quello che gli utenti usano per collegarsi al server.

    Se non potete utilizzare la configurazione fornita, i parametri sono:
    server gestiti da CSITA server di strutture
    Country Name IT IT
    State or Province Name <enter> <enter>
    Locality Name <enter> <enter>
    Organization Name Universita' di Genova Universita' di Genova
    Organizational Unit Name CSITA applicazioni
    Common Name nome DNS completo del server o del virtual host (es. www.csita.unige.it) nome DNS completo del server o del virtual host
    Email Address <enter> il vostro indirizzo

    (una sequenza alternativa di comandi è sul manuale di mod_ssl)

    Per verificare il contenuto della richiesta, potete usare il comando:



    openssl req -verify -noout -text -in server.csr



    Il CSR (Certificate Signing Request) è comunque un normale file di testo.

    Inviare il file server.csr a












  3. spostare il file con la chiave (server.pem) in una directory accessibile solo a root (es. /etc/apache/keys/).

Installazione del certificato:

quando l'Autorità di Certificazione restituirà il certificato

  1. salvare il file restituito (server.crt) nella directory di Apache (es. /etc/apache/);
  2. poiché all'avvio di Apache viene richiesta la pass phrase, cosa che impedisce l'avvio automatico, può essere utile decifrare la chiave privata, sempre considerando che deve quindi essere maggiormente protetta dall'accesso degli utenti della macchina:



    openssl rsa -in server.pem -out server.key






  3. attivare per il virtual host il motore SSL:



    <VirtualHost 130.251.172.26:443>

    SSLEngine On

    SSLCertificateKeyFile /etc/apache/keys/server.key

    SSLCertificateFile /etc/apache/server.crt

    ... altre direttive ...










  4. riavviare Apache. Se si tratta di un rinnovo del certificato, occorre fermate Apache (apachectl stop) e avviarlo (apachectl start). Il riavvio (apachectl restart) non sempre è sufficiente.

Certificati per applicazioni Java

I certificati per le applicazioni Java sono memorizzati in un file detto keystore che può essere manipolato con il programma keytool fornito con la distribuzione Java. Un'introduzione alla sicurezza Java è disponibile come tutorial sul sito Sun Microsistems.

Queste istruzione si riferiscono alla creazione di un nuovo keystore; sono applicabili sia alle piattaforme Microsoft Windows sia aquelle Unix/Linux, prestando attenzione ai separatori nei percorsi di file (/ per sistemi Linux e \ per sistemi Windows).

  1. inizializzare il keystore, generando la coppia di chiavi e la richiesta di certificato:



    keytool -genkey -keyalg RSA -keystore <file keystore> -dname "CN=<FQDN del server>,OU=CSITA,O=Universita' di Genova,C=IT" -alias <nome convenzionale>



    dove il FQDN (Fully Qualified Domain Name del server è il nome DNS con tutte le parti, (es. www.csita.unige.it).

    Il programma richiederà due password, una generale del keystore, che serve per tutte le operazioni che ne richiedono l'accesso, e una specifica per cifrare la chiave privata generata. Un keystore può contenere più chiavi, purché con alias diversi.




  2. estrarre la richiesta di certificato (CSR Certificate Signing Request) dal keystore:



    keytool -certreq -alias <nome convenzionale> -keystore <file keystore> -file server.csr



    Inviare il file server.csr, che è un normale file di testo, a



  3. per usare il keystore in applicazioni TLS/SSL client o per poter importare il proprio certificato, occorre prima installare i certificati radice scaricati dal UnigeCA (verificare, eventualmente telefonicamente, che il firngerprint corrisponda):



    keytool -import -keystore <file keystore> -alias unigeca -file unigeca.crt

    Enter keystore password: *******

    Owner: CN=Unige-CA, O=Universita' di Genova, C=IT

    Issuer: CN=Unige-CA, O=Universita' di Genova, C=IT

    Serial number: 0

    Valid from: Tue Dec 16 16:57:33 MET 2003 until: Mon Dec 16 16:57:33 MET 2013

    Certificate fingerprints:

      MD5: 80:C3:59:E2:EA:05:D5:B8:67:CF:55:F6:1C:7F:AE:F6

      SHA1: 82:34:F8:A2:44:B2:A9:AB:BB:15:B0:0D:7B:17:4C:98:5A:27:B9:02

    Trust this certificate? [no]: yes

    Certificate was added to keystore













    procedendo poi allo stesso modo per il certificato della sottoCA necessaria.



  4. ricevuto il certificato firmato, occorre reimportarlo nel keystore:



    keytool -import -keystore <file keystore> -alias <nome convenzionale> -file server.crt