Certificati HTTPS gratuiti con Let’s Encrypt

Condividi:

Questo tutorial mostra come installare certificati https gratuiti per i propri domini web. E’ rivolto ai webmaster che hanno accesso alla console linux del proprio server con diritti amministrativi. I comandi elencati si riferiscono ad una distribuzione debian like, quindi debian, ubuntu ecc… anche se con distribuzioni diverse le cose sono praticamente identiche. Il server web è apache2

Perché migrare il proprio sito ad HTTPS

Con l’entrata in vigore del GDPR il 24 maggio 2018, migrare il proprio dominio al protocollo https è diventato imperativo  per ottemperare alla direttiva europea per la sicurezza dei dati, inoltre dal 1 gennaio 2017 google considera come non sicuri tutti i siti che non supportano questo protocollo attribuendo delle penalità al ranking delle pagine web.

Cos’è Let’s Encrypt

Let’s encrypt, è una certification authority no profit nata nel 2012 con lo scopo di cifrare le comunicazioni sul web in maniera gratuita, automatizzando il processo di installazione, manutenzione e rinnovo dei certificati X.509 per il protocollo TLS

I certificati https generati hanno una validità di 90 giorni, ma vengono automaticamente rinnovati dal bot installato sul server

Certbot

Con certbot automatizzeremo tutto il processo di generazione, installazione e aggiornamento del certificato.

Per installare il bot, attiviamo per prima cosa il repository stretch-backports su apt

Ora possiamo aggiornare l’elenco dei pacchetti ed eventualmente il sistema

Installiamo il bot

Installiamo il certificato per un dominio

Con questa procedura possiamo generare certificati per uno o più host dello stesso dominio del tipo miodominio.me, www.miodomonio.me, api.miodominio.me ecc…

Il bot deve essere eseguito con utente root sul server dove è in esecuzione il server apache e il sito deve essere online.

Una volta eseguito, certbot eseguirà queste operazioni

  • Richiederà una serie di comande per identificare il proprietario ed il sito web
  • Si collegherà a let’s encrypt
  • Installerà i certificati .pem in /etc/letsencrypt/live/
  • Installerà la versione HTTPS del sito creando un nuovo virtal host
  • Modificherà il virtual host del sito per fare il redirect automatico alla versione https
  • Ricaricherà apache con la nuova configurazione

Se invece vogliamo generare il solo certificato che installeremo poi manualmente, eseguiamo certbot con l’opzione certonly

Possiamo specificare il dominio, host.dominio o dominio e host.dominio per cui generare il certificato con l’opzione -d

Certificato per dominio con wildcards

E’ possibile generare certificati per domini con wildcard del tipo *.miodominio.me con cui convalidare tutti gli host di miodominio.me

Per farlo però dobbiamo usare un dns-plugin di certbot, la procedura per l’installazione di questo plugin è descritta nell’articolo Certbot dns plugin rfc2136

Dopo aver configurato il plugin e bind come descritto, è possibile generare anche questo tipo di certificati come un comando come questo

Tramite certonly il certificato viene generato, ma non installato in apache quindi lo dovremo fare manualmente. Viene detto a cert bot di utilizzare il plugin –dns-rfc2136 a cui viene passato un file contenente le credenziali da utilizzzare per fare l’update della zona su bind con –dns-rfc2136-credentials. Con -d viene specificato per quali host e domini creare il certificato, in questo caso ne creiamo uno per miodominio.me e tutti i domini di terzo livello

*.miodominio.me non è valido per miodominio.me quindi lo dobbiamo esplicitare per includerlo nello stesso certificato.

*.miodominio.me è valido per domini come www.miodominio.me, api.miodominio.me, mail.miodominio.me ecc…

E’ possibile usare ad esempio www*.miodominio.me per www1.miodominio.me, www2.miodominio.me ecc… nel qual caso non sarebbe più valido per api.miodominio.me, mail.miodominio.me ecc…

E’ comunque possibile inserire nella stessa opzione -d più domini con wildcard

La wildcard è valida solo per il livello di dominio in cui è inserita, tranne per domini di primo livello perchè il certificato sarebbe troppo generico, quindi *.miodominio.me non vale per m.www.miodominio.me

Amministrazione dei certificati
Elenco dei certificati installati

Rinnovo manuale

Il rinnovo manuale del certificato può essere fatto tramite il comando renew

E’ anche possibile fare un semplice test di rinnovo senza che vengano apportate modifiche

Revoca di un certificato

La revoca può essere fatta tramite il percorso del certificato

Oppure tramite il nome

Cancellazione di un certificato

Senza ulteriori flag, verrà chiesto quale certificato debba essere cancellato

In alternativa possiamo specificare il nome del certificato da eliminare

Estensione di un certificato

Nel caso avessimo generato un certificato per miodominio.me e lo volessimo estendere anche a www.miodominio.me ( o viceversa ) usiamo l’opzione –expand

In questo modo il bot cercherà tra quelli installati il certificato da estendere, ne genererà uno nuovo e lo installerà al posto di quello vecchio che rimane comunque salvato in /etc/letsencrypt/archive/

Donazioni

Let’s encrypt è una CA no profit, ma questo non significa che non abbia costi di gestione. Chi gestisce molti domini, faccia due conti di quanti soldi riesce a risparmiare grazie a questo servizio e si metta una mano sul cuore.

Let’s Encrypt Donate