Nella lezione precedente, abbiamo visto come ottenere un certificato SSL da una certification authority. In questa lezione vedremo come installare tale certificato, assumendo di lavorare su Apache.
Nell'approfondimento dedicato a Let's Encrypt, avevamo spiegato in che modo ottenere ed installare automaticamente un certificato SSL su Apache. In questo caso, infatti, è sufficiente un singolo comando:
./letsencrypt-auto --apache
Se abbiamo scelto, per qualche motivo, di non utilizzare Let's Encrypt, dovremo però procedere diversamente. La procedura non è complicata, ma non certo immediata come nel caso appena descritto.
La prima cosa da fare è scaricare il certificato appena ricevuto dalla Certification Authority, che generalmente ci viene inviato via mail sotto forma di archivio .zip. Generalmente, tale archivio contiene due file: il certificato SSL ed un certificato di intermediazione. Se così non è, questo link fornirà ulteriori informazioni per l'ottenimento di entrambi questi file.
L'installazione dei certificati necessita, innanzitutto, del caricamento di questi due file in una cartella del nostro server, solitamente /etc/apache/ssl/ nel caso di Apache, oppure /etc/apache2/ssl nel caso di Apache2. Fatto ciò, verifichiamo che Apache abbia effettivamente installato il modulo SSL. Per farlo, eseguiamo il comando seguente:
a2enmod ssl
Riavviamo quindi Apache come segue (assumendo di lavorare su Ubuntu):
sudo service apache2 restart
A questo punto, apriamo il file httpd.conf di Apache (di cui abbiamo parlato appronditamente nella guida ad Apache), e cerchiamo la sezione dedicata ai Virtual Host. Aggiungiamo quindi quanto segue:
<VirtualHost *:443>
DocumentRoot /var/www/
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/certificato.crt
SSLCertificateKeyFile /etc/apache2/ssl/chiave_privata.key
SSLCertificateChainFile /etc/apache2/ssl/DigiCertCA.crt
</VirtualHost>
Il primo parametro serve a mettere in ascolto Apache sulla porta 443 (ovvero quella di default per HTTPS), mentre SSLEngine on
abilita le funzionalità di SSL. SSLCertificateFile
indica il path del file del certificato SSL che abbiamo ricevuto dalla CA, mentre SSLCertificateChainFile
indica il path del certificato di intermediazione. Infine, SSLCertificateKeyFile
indica il file contenente la nostra chiave privata, che può essere generata a partire dal file .crt come descritto a questo link.
Salviamo quindi il file httpd.conf e riavviamo nuovamente Apache.
Redirect di HTTP su HTTPS
In molti casi, per garantire la retrocompatibilità del nostro sito HTTPS con chi tenta di raggiungerlo in HTTP, possiamo aggiungere una ulteriore entry ai Virtual Host che effettua un redirect automatico; ecco come:
<VirtualHost *:80>
ServerName miosito.com/
Redirect / https://miosito.com/
</VirtualHost>