Unnikked - Esperienze personali in campo informatico

Come configurare un certificato SSL su Apache

Durante la fase di realizzazione di un sito web a volte è necessario che la trasmissione dei dati avvenga in modo sicuro tra client e server, ciò per evitare azioni fraudolente da parte di malintenzionati. Un esempio: l’invio di un form HTML contenente informazioni sensibili come password, codici bancari etc.

In Internet esiste un protocollo di comunicazione che permette l’interscambio dei dati tra client e server in modo sicuro e crittografato, ovvero HTTPS.

In questo articolo vedremo come configurare apache per permettere il supporto del protocollo HTTPS.

Per prima cosa bisogna avere installato apache sulla propria macchina. Successivamente va abilitato il modulo SSL tramite il comando:

a2enmod ssl

Riavviamo il servizio Apache con:

service apache2 restart

Successivamente andiamo a creare una nuova cartella in cui andremo a salvare il certificato e la chiave:

mkdir /etc/apache2/ssl

Quando richiediamo un nuovo certificato, possiamo specificare la sua data entro la quale esso rimane valido cambiando il valore 365 con il numero dei giorni che si preferisce. In questo caso il certificato scadrà dopo un anno:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Con questo comando creeremo sia il certificato SSL auto-firmato sia la chiave del server per proteggerlo, li metterà nella cartella specificata.

Il comando mostrerà sul terminare una lista di campi che bisogna compilare. La linea più importante è “Common Name”. Inserisci qui il nome dominio o, se ancora non è disponibile, l’indirizzo ip del server.

``` You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:NYC Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc Organizational Unit Name (eg, section) []:Dept of Merriment Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:webmaster@awesomeinc.com ```

Una volta creato il certificato dobbiamo configurare il Virtual Host che andrà a mostrare il certificato. Apriamo il file:

vim /etc/apache2/sites-available/default-ssl

Dentro la sezione che inizia con `<VirtualHost *:443>...` bisogna effettuare i seguenti cambiamenti. Aggiungiamo una linea con il nome del server sotto la email dell’amministratore di sistema:

ServerName example.com:443

Sostituiamo example.com con il nome dominio o l’indirizzo ip del server (deve essere lo stesso come specificato nel campo Common Name sul certificato).

Troviamo le seguenti tree linee e assicuriamoci che corrispondano al percorso dove è stato salvato il certificato e la chiave:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Prima che il sito web sia disponibile sulla porta 443 bisogna abilitare il Virtual Host appena modificato:

a2ensite default-ssl

Ora possiamo riavviare Apache per applicare le modifiche effettuate:

service apache2 reload

Digitando nel browser https://tuonomedominio verrà mostrato il certificato.