Rendiamo sicuro il tuo server Apache mediante un certificato SSL/TLS.
Una volta che avrai installato il certificato, il tuo dominio o indirizzo IP sarà raggiungibile tramite il protocollo HTTPS.
Iniziamo subito.
Ecco i passi fondamentali che eseguiremo:
- Compilazione di Apache HTTP 2.4.5 con il modulo SSL
- Ottenimento di un certificato SSL
- Configurazione di Apache per il supporto SSL
Installazione di Apache con SSL dai sorgenti
Per abilitare SSL, Apache HTTP deve essere compilato con il modulo mod_ssl. Per questa dimostrazione, utilizzerò una Virtual Machine CentOS 7 fornita da Oceano Digitale.
- Accedi al server Linux come utente root e scarica l’ultima versione di Apache.
wget https://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .
Nota: puoi verificare l’ultima versione disponibile qui.
- Estrai l’archivio con il comando gunzip.
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
- Si creerà una nuova cartella “httpd-2.4.25”.
- Entra nella cartella e lancia il seguente comando di configurazione.
./configure --enable-ssl –-enable-so
Nota: se stai lavorando su un server nuovo, potresti avere problemi con APR, PCRE, OpenSSL; consulta la guida per la risoluzione dei problemi.
Assicurati che il comando di configurazione non restituisca errori. In seguito, procedi con l’installazione tramite i comandi make.
make
make install
Verifica che non ci siano errori anche con questi comandi. A questo punto, hai installato un server web Apache con il supporto SSL.
Acquisizione di un Certificato SSL
Esistono diversi modi per generare e ottenere un certificato SSL firmato da una Certification Authority.
Se devi installare SSL su un server web interno alla tua azienda, la maggior parte delle organizzazioni ha un team interno che si occupa dell’emissione dei certificati. In questo caso, dovrai contattare loro. Tuttavia, dovrai comunque creare una CSR (Certificate Signing Request), cosa che puoi fare tramite OpenSSL.
Se invece devi proteggere un URL accessibile da Internet, puoi acquistare un certificato da VeriSign, GoDaddy, Namecheap, Zero SSL, ecc., oppure puoi ottenere un certificato GRATUITO da Let’s Encrypt.
Let’s Encrypt è un progetto collaborativo della Linux Foundation che offre certificati SSL/TLS GRATUITI. In questa guida, utilizzerò Let’s Encrypt per ottenere un certificato per il mio dominio: Chandan.io.
Ci sono vari modi per generare una CSR, ma il metodo più semplice che ho trovato è quello di utilizzare lo strumento online “SSL For Free“.
Inserisci l’URL che vuoi proteggere.
Verifica la proprietà del dominio con uno dei metodi proposti e scarica i file del certificato.
Otterrai tre file che utilizzeremo in seguito per configurare il server web Apache.
- chiave: è il file della tua chiave privata e non deve essere condiviso pubblicamente.
- Certificato: il certificato SSL vero e proprio per il tuo dominio.
- Ca_bundle: certificato radice/intermedio dell’autorità di certificazione.
Trasferisci i file scaricati sul tuo server web. Ne avremo bisogno a breve.
Configurazione SSL su Apache
L’ultimo passo consiste nel configurare Apache in modo che possa gestire le richieste tramite HTTPS.
- Accedi al server web Apache.
- Effettua un backup del file httpd.conf (la posizione predefinita è /usr/local/apache2/conf/).
- Apri il file con un editor di testo (ad esempio vi) e controlla che i moduli mod_ssl e httpd-ssl.conf siano presenti e non commentati.
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
Utilizzeremo il file httpd-ssl.conf per configurare i dettagli del certificato. Assicurati che i seguenti parametri siano definiti correttamente:
- SSLCertificateFile: il percorso del file .crt del certificato che hai scaricato in precedenza.
- SSLCertificateKeyFile: il percorso del file della chiave privata.
- SSLCertificateChainFile: il percorso del file ca_bundle.crt.
Suggerimento: crea una cartella “ssl” e conserva al suo interno tutti i file relativi al certificato.
- Se necessario, crea un backup e modifica il file utilizzando un editor di testo (es. vi).
SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt"
SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"
Successivamente, configura la direttiva “ServerName”. Di solito, questo è il tuo nome di dominio/URL.
ServerName chandan.io
- Salva il file e riavvia il server web Apache.
cd /usr/local/apache2/bin
./apachectl stop
./apachectl start
Infine, assicurati che il tuo dominio sia puntato all’indirizzo IP del server web appena configurato. Al termine, prova ad accedere al tuo dominio tramite HTTPS.
Come puoi vedere, Chandan.io è accessibile tramite HTTPS con il certificato che ho configurato.
I passaggi descritti sono fondamentali per l’installazione di un certificato SSL. Potresti voler configurare ulteriormente SSL per renderlo più robusto e sicuro, come spiegato in questo articolo. Prima di andare in produzione, ti consiglio di testare il tuo server web SSL/TLS per assicurarti che non sia esposto a vulnerabilità di sicurezza.
Spero che questo articolo ti abbia dato un’idea su come installare un certificato SSL sul tuo server web Apache, in modo che il tuo indirizzo web sia accessibile tramite HTTPS.
Ti è piaciuto l’articolo? Condividilo con altri!