Autore: Fabio Di Matteo
Ultima revisione: 09/03/2018 - 17:12
A partire da Apache 2.x e' incluso nella distribuzione un plugin di nome mod_ssl che permette di configurare il server web per instaurare connessioni cifrate mediante la libreria SSL. In pratica verra cifrato asimmetricamente il contenuto dei pacchetti tcp grazie a Secure Socket Layer (SSL) .
Andremo a creare una directory sotto la document root la quale sara' la document root per quanto riguarda il sito sotto ssl.
Creiamo la directory che conterra il sito ssl
mkdir /var/www/ssl
Settiamo l'utente di apache come proprietario
chown -R www-data /var/www/ssl/
A questo punto e' buona cosa avere a disposizione un nome host da utilizzare successivamente con l'host virtuale che andremo a creare. Esistono diversi servizi gratuiti che forniscono dei nomi di dominio dinamici ideali per questo scopo, ma se si vuole fare infretta per una prova in locale e' sufficiente modificare il file /etc/hosts aggiungendo una riga del genere:
127.0.0.1 miosito.com
a questo punto miosito.com viene risolto in 127.0.0.1 ovvero in localhost.
Per generare la chiave privata e il certificato possiamo usare Tinyca2 come esposto in creare_una_ca_con_tinyca_2 oppure usare openssl
da console nel seguente modo.
openssl genrsa -des3 -out my-CA.key 2048
dove :
-des3 indica che la chiave privata utilizzera l'algoritmo triple des ;
2048 indica la lunghezza della chiave in bit;
-out e' il file che conterra' la chiave privata (my-CA.key)
.
Verra' chiesto inseguito di inserire una passphrase.
openssl req -new -key my-CA.key -x509 -days 3650 -out my-CA.crt
dove :
req indica che vogliamo generare un certificato ;
new indica che questa e' una nuova richiesta;
-key indica il file contenente la chiave privata;
-x509 indica il tipo di certificato;
-days i giorni di validita' del certificato (3650 = 10 anni);
-out indica quale sara' il file che conterra il certificato (my-CA.crt )
;
A questo punto non ci resta che copiare la chiave privata e il certificato, appena ottenuti, in /etc/apache2/sites-available
nel nostro caso.
Apache permette di gestire piu' di un sito grazie all'utilizzo dei cosiddetti Virtual host
ovvero piu' domini virtuali sullo stesso pc. Noi useremo questa caratteristica di apache per configurare il nostro sito ssl.
Creiamo dentro la directory /etc/apache2/sites-available un file di nome ssl con questo contenuto:
<VirtualHost miosito.com:443> ServerName miosito.com DocumentRoot /var/www/ssl <IfModule mod_ssl.c> SSLEngine on #Certificato X509 SSLCertificateFile /etc/apache2/sites-available/my-CA.crt #Chiave privata SSLCertificateKeyFile /etc/apache2/sites-available/my-CA.key SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown </IfModule> </VirtualHost>
dove:
<VirtualHost miosito.com:443> e' il nome di dominio associato al nostro sito ssl. Accettera' le connessioni solo tramite questa url tramite protocollo https sulla porta 443; (Qui potremmo anche mettere l'ip es. <VirtualHost 192.168.1.2:443>
)
ServerName miosito.com il nome del nostro host virtuale;
DocumentRoot /var/www/ssl indica la document root del nostro sito ssl.
Adesso non ci resta che abilitare il sito con a2ensite ssl dove ssl
e' il file di configurazione del nostro host virtuale appena configurato.Oppure possiamo creare un link dentro la directory /etc/apache2/sites-enabled
che punti a
/etc/apache2/sites-available/ssl
.
Adesso e' arrivato il momento di riavviare apache con apache2ctl restart e puntare il nostro browser su https://miosito.com .
Puo' essere fastidioso digitare la password della chiave privata ogni volta che si riavvia apache, dunque possiamo eliminare la password in questo modo:
openssl rsa -in my-CA.key -out my-CA-nopasswd.key
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.