Configurare un certificato SSL su XAMPP per attivare HTTPS, è una necessità per tutti gli sviluppatori che desiderano testare i loro applicativi localmente in un ambiente che simula la realtà, ma prima…
Cos’è HTTPS e come attivarlo su XAMPP?
HTTPS (Hyper Text Transfer Protocol Secure) è un protocollo per la comunicazione sicura in internet che si basa sul funzionamento del protocollo HTTP, ma include un livello di sicurezza in più per proteggere i dati scambiati tra un browser ed un sito web. Tutto ciò avviene attraverso l’uso di un certificato SSL, che garantisce che i dati scambiati siano crittografati ed autentici e quindi protetti da eventuali tentativi di intercettazione.
In questo articolo/tutorial, ci saranno tutti i passi necessari a configurare HTTPS sul famoso webserver Apache su XAMPP.
Prima di iniziare, è importante segnalare che la configurazione di HTTPS su XAMPP è raccomandato solo per scopi di sviluppo e test di applicazioni che vengono eseguite localmente, in quanto il certificato che si andrà a generare sarà di tipo self-signed e quindi non riconosciuto come autorevole.
Requisiti:
- Software XAMPP: scaricabile da questo link
Step 1: Generazione del certificato SSL
Per stabilire una connessione sicura con il server web Apache utilizzando il protocollo HTTPS, è necessario possedere ed aver installato un certificato SSL che in questo caso è firmato e rilasciato da localhost. Accedendo al percorso di installazione di XAMPP e aprendo la cartella apache è possibile trovare un file batch chiamato makecert.bat che una volta avviato permetterà di generare un certificato SSL:
Avviando il file batch sopra evidenziato, si aprirà una finestra del prompt di Windows che permetterà di configurare il certificato SSL self-signed da generare. La prima cosa che viene richiesta è la PEM password che è utilizzata per generare la chiave privata. È necessario quindi inserire una password che verrà poi richiesta alla fine della procedura:
Una volta confermata la password compariranno i campi che andranno a caratterizzare il certificato SSL da generare. Il completamento non necessita di spiegazioni eccetto che per il campo Common Name che dev’essere compilato esclusivamente con localhost:
Step 2: Installazione del certificato
Una volta generato il certificato SSL, è necessario installarlo tra i certificati delle autorità di certificazione attendibili in modo da riconoscerlo come valido e sicuro. Il primo passo è quello di cliccare due volte sul certificato generato e selezionare Installa certificato…:
Successivamente si dovrà installare il certificato nel computer locale:
E nella schermata successiva configurare i campi nel seguente modo:
Dopo aver completato la procedura premendo Avanti e poi Fine il certificato sarà riconosciuto come valido e sicuro:
Step 3: Configurazione del file “http-vhost.conf”
Una volta installato correttamente il certificato SSL, è possibile configurare il file sopracitato in modo da permettere al server Apache di rispondere sulla porta 443 (HTTPS). Recandosi nel percorso di installazione xampp/apache/conf/extra è possibile trovare tale file ed aprirlo con il blocco note, aggiungendo in coda il seguente testo:
<VirtualHost *:443>
DocumentRoot "C:/xampp/htdocs/"
ServerName localhost
SSLEngine on
SSLCertificateFile "conf/ssl.crt//server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
<Directory "C:/xampp/htdocs/"
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Tale sezione indica anche il percorso del certificato SSL e la cartella che Apache utilizzerà per rispondere con la pagina web richiesta (in questo caso la cartella di default htdocs).
Test
Una volta riavviato XAMPP, è possibile accedere al web server in modo sicuro esclusivamente dalla macchina su cui è stato installato il certificato. Quindi l’indirizzo da digitare sul browser sarà https://localhost. Il webserver risponderà utilizzando il protocollo HTTPS:
N.B.
Come già detto in precedenza, questa procedura funziona solo per gli accessi da localhost, in quanto il certificato self-signed è stato rilasciato e reso attendibile direttamente dalla macchina locale. Accedendo da remoto all’indirizzo IP del server HTTPS non verrà attivato correttamente.