Attivare facilmente e gratuitamente HTTPS (non self-signed!)

PowerShell Zip
PowerShell, Zip & Unzip
6 aprile 2016
PowerShell
PowerShell, Edit Network Settings
18 aprile 2016
Mostra tutto

Attivare facilmente e gratuitamente HTTPS (non self-signed!)

Let's Encrypt
Con la crescente necessità di utilizzare HTTPS è diventato fondamentale individuare una soluzione da poter proporre agli utenti.
In questo caso specifico, la soluzione doveva essere:
  • Free/Open
  • Di semplice implementazione
  • Auto-Rinnovabile
  • Estendibile ai domini di terzo livello
  • Gestibile autonomamente dall'utente finale
Individuare una soluzione (funzionante) con queste caratteristiche non è stato semplice, fortunatamente non impossibile, infatti con l'aiuto di Let's Encrypt è possibile implementare tutto in poco meno di 10 min e senza troppi sforzi.

Prerequisiti

  • Distribuzione Debian-based
  • Web server Apache installato con uno (o più) domain names configurati

Dipendenze

Per prima cosa aggiorniamo la cache di APT:
$ sudo apt-get update
quindi (nel caso non fosse già installato) installiamo GIT (necessario per scaricare il client Let's Encrypt):
$ sudo apt-get install git

Download & Installazione

Procediamo a scaricare il client Let's Encrypt:
$ sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
questo duplica l'ultima versione di Let's Encrypt nel path /opt/letsencrypt.

Configurazione

Generiamo quindi il nostro certificato valido per il dominio interessato (passato come parametro).
Accediamo al path /opt/letsencrypt
$ cd /opt/letsencrypt
Per eseguire l'installazione interattiva (su singolo dominio) eseguire:
$ ./letsencrypt-auto --apache -d example.com
Nel caso invece si volesse installare un singolo certificato valido per più domini/sotto-domini eseguire:
$ ./letsencrypt-auto --apache -d example.com -d www.example.com
Nota: In questo esempio il dominio base sarà example.com

Al termine dell'installazione delle dipendenze verrà mostrato un wizard che chiederà di inserire una mail valida (per le comunicazioni e per recuperare eventuali chiavi perse) il wizard consentirà quindi di customizzare le opzioni. Al termine sarà possibile scegliere se abilitare sia http che https oppure se forzare tutte le connessioni in https.
Terminata l'installazione dovrebbe esserci i files appena generati nel path /etc/letsencrypt/live e dovrebbe essere possibile accedere al vostro dominio utilizzando il prefisso https.

Per verificare lo stato del vostro certificato, visitare il seguente link:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
Rimpiazzando example.com con il vostro dominio base.

Rinnovo

I certificati forniti da Let's Encrypt scadono dopo soli 90 giorni, fortunatamente tramite letsencrypt-auto renew è possibile rinnovarli automaticamente a partire da 30gg prima della scadenza.

Eseguendo letsencrypt-auto renew verrà mostrato un output simile a questo:
Checking for new version...
Requesting root privileges to run letsencrypt...
   /root/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.
Nota: nel caso fossero presenti più domini, solo il dominio base verrà mostrato nell'output ma, anche gli altri saranno automaticamente rinnovati.

Autorinnovo

Per automatizzare il processo possiamo inserire tutto in un cron utilizzando:
$ sudo crontab -e
creando il job (con log) in questo modo:
0 7 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/ssl-renew.log
In questo modo, ogni Lunedì mattina alle 7:00 verrano rinnovati (ogni 60gg per le politiche let's encrypt) tutti i certificati generati, aggiungendo di volta in volta l'output al log file /var/log/ssl-renew.log.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *