Configurare connessioni https con apache2 e mod_ssl

Questo articolo illustra come abilitare il protocollo https con il web server apache (versione 2.x).

La procedura e' molto semplice ed e' strutturata in questo modo:

  • Creazione del certificato
  • Installazione del modulo mod_ssl
  • Configurazione del server web e quindi del sito

Vediamo nel dettaglio le varie fasi:

Per creare il certificato utilizzeremo l'applicazione openssl

Se state utilizzando una distribuzione linux  Debian/Ubuntu potrete installarla con questo comando

apt-get install openssl

Con Fedora/Centos invece si installa cosi'

yum install openssl

Se non disponete di un pacchetto precompilato potrete  compilare il sorgente di openssl.

Compilazione ed installazione vengono eseguiti nel modo 'classico'

gunzip openssl-0.9.8k.tar.gz

tar xvf openssl-0.9.8k.tar

cd openssl-0.9.8k

sh ./config

make make test

make install


Dopodiche' dovremmo creare il certificato. Ecco il comando:

openssl req -newkey rsa:1024 -x509 -nodes -days 365 -out /etc/apache2.pem -keyout /etc/apache2.pem

N.B. Nell'opzione days e' specificato il valore 365 quindi il certificato sara' valido per 1 anno

Occupiamoci ora del modulo ssl e configuriamo apache.

In Debian/Ubuntu il modulo ssl e'  installato di default e dovra' essere solamente abilitato con

a2enmod ssl

Gli utenti che utilizzano Fedora invece per abilitarlo dovranno inserire nel file /etc/httpd/conf.d/ssl.conf questa direttiva

LoadModule ssl_module modules/mod_ssl.so

N.B. Se  mod_ssl non e' installato, bastera' digitare questo comando "yum install mod_ssl"

Il protocollo https accetta connessioni sulla porta 443 (a differenza di http che utilizza l'80).

Gli utenti Debian/Ubuntu dovranno aggiugere in /etc/apache2/ports.conf

Listen 443

Gli utenti Fedora invece dovranno scrivere la suddetta direttiva in /etc/httpd/conf.d/ssl.conf

Non rimane che configurare il VirtualHost

<VirtualHost www.lucaercoli.it:443>
DocumentRoot "/var/www/sito/htdocs"
ServerName www.lucaercoli.it

SSLEngine on

SSLCertificateFile /etc/apache2.pem

</VirtualHost>

N.B Cambiate il nome del virtualhost, del server e la documentroot del sito

e riavviare apache

/etc/init.d/httpd restart (Fedora)

/etc/init.d/apache2 restart (Debian e Ubuntu)