Guide tecniche

Come creare certificati Let’s Encrypt

Let’s Encrypt è una certification authority famosa per la fornitura di certificati SSL gratuiti e validi.

In questa guida vedremo come creare certificati Let’s Encrypt su Ubuntu, sia per singolo dominio che in wildcard. Inoltre vedremo come gestire la rognosa parte dei rinnovi dietro Cloudflare.

Indice dei Contenuti

Installazione di Cerbot

Come prima cosa occorre installare Certbot, uno script Python per l’automazione dei processi di creazione, validazione e rinnovo dei certificati Let’s Encrypt.

Prima però è consigliato procedere ad aggiornare i repository e ad installare l’interprete Python con i seguenti comandi:

sudo apt-get update
sudo apt-get install python-minimal

Controllare che la versione di Python installata sia quanto meno la 2.7:

python --version

A questo punto installare git che utilizzeremo per prelevare la versione più recente di Certbot:

sudo apt-get install git-core
git --version

Una volta installato ed appurato il funzionamento di git, accedere alla directory /opt e scaricare Certbot al suo interno:

cd /opt
sudo git clone https://github.com/certbot/certbot.git
cd certbot

Creazione di un certificato SSL single domain

A questo punto non rimane che creare il primo certificato SSL. Per farlo basta lanciare il seguente comando all’interno della directory /opt/certbot avendo l’accortezza di sostituire l’indirizzo email e il dominio con quello oggetto del certificato:

sudo ./certbot-auto certonly --manual --preferred-challenges=dns --email test@miaemail.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d miodominio.it

Di seguito la risposta di Certbot:

Requesting to rerun ./certbot-auto with root privileges...
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for miodominio.it

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.miodominio.it with the following value:

8kG1HBNFP8BGeD6QWi9Y3MU2PgjNY9UY9YIIvKBqW8M

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

A questo punto Certbot ti chiede di creare sul file di zona di miodominio.it un record DNS di tipo TXT dal nome _acme-challenge e dal valore 8kG1HBNFP8BGeD6QWi9Y3MU2PgjNY9UY9YIIvKBqW8M

A questo punto Certbot chiede che per il dominio in oggetto venga creato un record DNS di tipo TXT per verificare che i creatori del certificato siano anche i gestori del dominio.

Una volta creato il DNS assicurarsi che si sia propagato sul web prima di cliccare Invio. Per verificare la propagazione del DNS è possibile utilizzare il comando dig come segue:

dig _acme-challenge.miodominio.it TXT

In caso di risposta come la seguente, il DNS può definirsi propagato:

;; ANSWER SECTION:
_acme-challenge.miodominio.it. 300 IN TXT "8kG1HBNFP8BGeD6QWi9Y3MU2PgjNY9UY9YIIvKBqW8M"

A questo punto non rimane che cliccare Invio per proseguire con Certbot:

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/miodominio.it/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/miodominio.it/privkey.pem
Your cert will expire on 2019-06-04. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Il certificato è stato creato con successo:

  • Path certificato: /etc/letsencrypt/live/miodominio.it/fullchain.pem
  • Path chiave segreta: /etc/letsencrypt/live/miodominio.it/privkey.pem
  • Path file CA: /etc/letsencrypt/live/miodominio.it/chain.pem

Creazione di un certificato SSL wildcard

Un certificato wildcard consente di rendere sicura non solo la comunicazione del dominio principale ma anche di tutti i suoi sottodomini. Vediamo dunque come creare un certificato SSL wildcard con Let’s Encrypt.

La procedura è sostanzialmente identica a quella già vista con la differenza che il dominio deve essere preceduto dal carattere asterisco come segue:

sudo ./certbot-auto certonly --manual --preferred-challenges=dns --email test@miaemail.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.miodominio.it

Per il resto la procedura è identica.

Come aggiornare i certificati SSL Let’s Encrypt

I certificati SSL non sono validi per sempre, bensì hanno una durata di circa 90 giorni. Quando un certificato è prossimo alla scadenza, Let’s Encrypt invierà una email notifica all’indirizzo email specificato in fase di creazione del certificato.

Per rinnovare il certificato basta eseguire la stessa e identica procedura utilizzata per crearlo. Il nuovo certificato andrà a sostituire automaticamente il vecchio.

Configurare Cloudflare con Let’s Encrypt

Se i domini sono ospitati su Cloudflare, è possibile automatizzare la validazione via DNS utilizzando il modulo certbot-dns-cloudflare. Per installare il modulo lanciare i seguenti comandi:

apt-get install python-pip
pip install certbot-dns-cloudflare

Fatto questo creare in una location sicura un file dal nome cloudflare.ini il cui contenuto deve essere il seguente

# Cloudflare API credentials used by Certbot
dns_cloudflare_email = email account Cloudflare qui
dns_cloudflare_api_key = Global API Key Cloudflare qui

Fatto questo non resta che creare/aggiornare un certificato Let’s Encrypt con il seguente comando:

certbot certonly --dns-cloudflare --dns-cloudflare-credentials cloudflare.ini --email test@miaemail.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.miodominio.com

Configurare i certificati SSL su Postfix

Anche qui la procedura è semplicissima. Basta modificare il file /etc/postfix/main.cf e modificare/inserire le seguenti direttive:

smtpd_tls_key_file = /etc/letsencrypt/live/miodominio.it/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/miodominio.it/fullchain.pem
smtpd_tls_CAfile = /etc/letsencrypt/live/miodominio.it/chain.pem

Riavviare Postfix:

service postfix restart

Configurare i certificati SSL su Dovecot

La stessa procedura vista per Postfix si ripete per Dovecot. Basta infatti modificare il file /etc/dovecot/dovecot.conf e modificare/inserire le seguenti direttive:

ssl_ca = </etc/letsencrypt/live/miodominio.it/chain.pem
ssl_cert = </etc/letsencrypt/live/miodominio.it/fullchain.pem
ssl_key = </etc/letsencrypt/live/miodominio.it/privkey.pem

Riavviare Dovecot:

service dovecot restart

Configurare i certificati SSL su Nginx

Aprire il file di configurazione del dominio configurato su Nginx, ad esempio /etc/nginx/site-enabled/miodominio.it ed aggiungere/modificare le seguenti direttive:

server {

  listen 443 ssl;
  server_name www.miodominio.it miodominio.it;

  ssl_certificate /etc/letsencrypt/live/miodominio.it/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/miodominio.it/privkey.pem;

  ...

Salvare e ricaricare le configurazioni:

sudo service nginx reload

Configurare i certificati SSL su Apache

Anche su Apache, come Nginx, modificare il file del virtual host, ad esempio /etc/apache2/site-enabled/miodominio.it.conf ed aggiungere/modificare le seguenti direttive:

<VirtualHost *:443>

  ServerName miodominio.it
  ServerAlias www.miodominio.it

  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/miodominio.it/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/miodominio.it/privkey.pem

  ...

Salvare e ricaricare le configurazioni:

sudo service apache2 reload

Articoli pubblicati di recente

Come avere tanti Mi Piace su Facebook

Come aumentare i Mi Piace su Facebook? È uno dei bisogni primari di chi si…

15 Marzo 2020

Facebook Pixel: cos’è e come crearne uno

L'utilizzo del Pixel di Facebook è fondamentale per l'ottimizzazione di una campagna pubblicitaria Facebook ma…

17 Febbraio 2020

Social network più famosi: lista aggiornata al 2024

Quali sono i social network più famosi? Ormai i social network a disposizione del pubblico…

28 Gennaio 2020

Google BERT update: tutto quello che c’è da sapere

Google BERT è l'algoritmo di Google entrato in funzione il 25 Ottobre del 2019. A…

24 Gennaio 2020

Analisi SWOT: come si fa ed esempio pratico

L'analisi SWOT è parte integrante e importantissima di un piano marketing efficace. Grazie a questo…

22 Gennaio 2020

Come apparire su Google Maps

Apparire su Google Maps è estremamente importante per un'attività locale. Consente non solo di ottenere…

2 Gennaio 2020