Di seguito i passi che vi permetteranno di configurare il vostro web server locale di OSX per lavorare con il protocollo HTTPS, non presente di default sul webserver preinstallato.
Partiamo dal presupposto che il vostro server locale si chiami “localhost” e che quindi il browser risponda correttamente a “http://localhost”.
Passo 1: Creazione del certificato SSL autofirmato. Sui siti di produzione, i certificati vengono normalmente acquistati e installati. Sul nostro server di sviluppo ciò non è necessario e possiamo lavorare con dei certificati creati da noi. Ecco come fare:
cd /private/etc/apache2
sudo mkdir ssl
cd ssl
sudo ssh-keygen -f localhost.key
ATTENZIONE: in questa fase vi verrà chiesto se volete creare una passphrase o lasciarla vuota. Va lasciata vuota, altrimenti a fine procedimento Apache non si riavvierà!
sudo openssl req -new -key localhost.key -out localhost.csr
In questa fase vi verranno chiesti vari dati (codice paese, indirizzi, nomi, ecc…). Tutti questi valori possono assumere valori assolutamente arbitrari tranne uno: Common Name, che deve essere impostato con localhost
sudo openssl x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt
sudo openssl rsa -in localhost.key -out localhost.nopass.key
Passo 2: configurazione del webserver (Apache)
cd /etc/apache2
sudo nano httpd.conf
LoadModule ssl_module libexec/apache2/mod_ssl.so
Include /private/etc/apache2/extra/httpd-ssl.conf
Passo 3: configurare il Virtual Host
cd /etc/apache2/extra
sudo nano httpd-ssl.conf
VirtualHost _default_:443
con
VirtualHost *:443
DocumentRoot: "/Users/ILTUONOMEUTENTE/Sites"
ServerName: localhost
sudo apachectl -t
sudo apachectl restart
A questo punto potete visitare tutti i vostri siti locali anche attraverso il protocollo HTTPS, semplicemente specificandolo nell’indirizzo. Tuttavia il browser vi segnalerà che si tratta di una connessione non sicura (questo perchè ci siamo autogenerati il certificato), costringendoci ogni volta che visitiamo uno di questi siti locali a confermare con un clic la sua attendibilità. Alquanto noioso! Vediamo ora come evitarlo:
Passo 4: Accettazione del certificato locale (su Chrome)
…ed è tutto! Ora tutti i vostri saranno navigabili indifferentemente tra http e https, e quest’ultimo correttamente certificato.