Certificati SSL

Da Fabwiki.

Creazione dei certificati SSL

Questo documento spiega come creare i certificati SSL per il proprio server Apache.

Cosa ci serve ?

Naturalmente il webserver apache e openssl

Come si installa ?

La prima cosa da fare è generare una chiave privata, per crearla utilizziamo il comando:

openssl genrsa -des3 -out server.key 1024

(potete cambiare "server.key" con qualunque nome, per esempio nel mio caso, fabreg.key)

L' output generato sarà:

Generating RSA private key, 1024 bit long modulus
.........................................................++++++
........++++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:

Inserite le password richieste e continuate.

Ora dobbiamo creare il certificato vero e proprio, per farlo useremo il comando

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

A video vedremo:

Country Name (2 letter code) [GB]:IT
State or Province Name (full name) [Berkshire]:Italy
Locality Name (eg, city) [Newbury]:Milan
Organization Name (eg, company) [My Company Ltd]:fabreg.it
Organizational Unit Name (eg, section) []:Sito di fabreg
Common Name (eg, your name or your server's hostname) []:fabreg.it
Email Address []:nospam@fabreg.it
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Potermmo anche decidere di fermarci ora, ma se cosi' decidessimo ogni volta che il webserver apache verrà avviato, verrà richiesta una password. Per ovviare questo "inconveniente" possiamo procedere come segue:

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

dovremmo visualizzare:

-rw-r--r-- 1 root root 745 Jun 29 12:19 server.csr
-rw-r--r-- 1 root root 891 Jun 29 13:22 server.key
-rw-r--r-- 1 root root 963 Jun 29 13:22 server.key.org

A questo punto non ci resta che dare il comando:

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

che visualizzerà

Signature ok
subject=/C=CH/ST=Bern/L=Oberdiessbach/O=Akadia AG/OU=Information
Technology/CN=public.akadia.com/Email=martin.zahn@akadia.com
Getting Private key

Benissimo, abbiamo creato il nostro certificato (con valità di 365 giorni, se desiderate crearne uno che duri di piu', basta cambiare il parametro -days <valore_in_giorni>). Adesso dobbiamo inserirlo nel file http.conf (file di configurazione di apache) nelle corrispettive voci SSLCertificateFile e SSLCertificateKeyFile (il primo per il certificato, il secondo per la chiave). Assicuriamoci inoltre che SSLEngine sia ad on.

SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
CustomLog logs/ssl_request_log \
   "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

Riavviamo il nostro server apache e il gioco è fatto :-)


--Fabrizio 14:53, 1 Dic 2006 (CET)