giovedì 31 maggio 2012

Abilitare SSL su Apache2

Premesso che non sono un sistemista, quello che trovate di seguito può essere utile per effettuare dei test utilizzando Apache2, il protocollo HTTPS e un certificato autofirmanto.

Passo1 - Creare il certificato con openssl

Se usate linux/unix, openssl dovrebbe essere già disponibile e nella peggiore delle ipotesi basterà scaricarlo dal repository in rete con il sempreverde: 

sudo apt-get install openssl

Verificata quindi la presenza di openssl possiamo creare il certificato usando un comando come questo:

sudo openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ca/my_apache_cert.pem -keyout /etc/apache2/ca/my_apache_cert.pem

Stiamo dicendo di creare un nuovo certificato ("-new") di tipo x509 ("-x509") valido per 365 giorni ("-days").
Il certificato e la chiave privata vengono salvati nella directory specificata con gli attributi "-out" e "-keyout". 
L'attributo "-new" dice che vogliamo generare un nuovo certificato quindi verranno richieste a riga di comando tutta una serie di informazioni quali nome azienda, indirizzo, e-mail, ...

Per i più curiosi e precisi, questa è la documentazione di riferimento per il comando "req" di openssl: http://www.openssl.org/docs/apps/req.html

Se aprite il certificato con il buon vecchio "VI" scoprirete che è diviso in due sezioni ed è completamente illegibile com'è giusto che sia:

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCq3HYf2jE9aYWYoHGJIZ9b45kQ6nYxnCwAIVwMtsVThIIOod6V
Svg2nLE5PILxdtLYSb4Yd8MDvvjyzHi+Tb2BGhL7jufs+4XiXZe/twobwb9VjvSF
....
....
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDCjCCAnOgAwIBAgIJAP5wSD/8B39IMA0GCSqGSIb3DQEBBQUAMGIxCzAJBgNV
BAYTAklUMQ8wDQYDVQQIEwZNaWxhbm8xDzANBgNVBAcTBk1pbGFubzEQMA4GA1UE
....
....
-----END CERTIFICATE-----

Passo2 - Abilitare il modulo SSL di Apache2

A questo punto abilitiamo il modulo SSL su Apache2 con il comando "a2enmod" (apache2 enable module).
Dovreste trovarlo già nel path essendo un comando installato in "/usr/sbin".

sudo a2enmod ssl

Passo3 - Configurare il virtual host SSL di default

Adesso dobbiamo configurare il virtual host di default per poter effettuare la nostra connessione https.
Usiamo il comando "a2ensite" (apache2 enable site):

sudo a2ensite default-ssl

Verrà creato un file di nome "default-ssl" all'interno di "/etc/apache2/sites-available/".

Controllate adesso che il file "/etc/apache2/ports" contenga le seguenti righe:

<IfModule mod_ssl.c>
Listen 443
</IfModule>


Questo indica che il nostro server sta in ascolto sulla porta 443, che è appunto la porta di default per le connessioni https.

Spostiamoci adesso in "/etc/apache2/sites-available/" e apriamo il file "default-ssl" creato in precedenza.
Assicuratevi che sia presente al suo interno la seguente riga:

SSLEngine On

e aggiungete il riferimento al nostro nuovo certificato:

SSLCertificateFile /etc/apache2/ca/my_apache_cert.pem

Salvate il file e chiudete.

Riavviate Apache con il comando:

apachectl restart

Collegatevi all'indirizzo https://localhost e il gioco è fatto.
Vi verrà chiesto se il certificato è attendibile e una volta dato l'ok avrete accesso alla vostre applicazioni su protocollo SSL.

Nessun commento:

Posta un commento