Let's Encrypt è un'autorità di certificazione (CA) che fornisce certificati SSL gratuiti con un client automatizzato. Utilizzando un certificato SSL Let's Encrypt, puoi crittografare il traffico tra il tuo sito Web e i tuoi visitatori. L'intero processo è semplice e i rinnovi possono essere automatizzati. Inoltre, si noti che l'installazione o il rinnovo dei certificati non causa alcun tempo morto.
In questo tutorial, useremo Certbot per ottenere, installare e rinnovare automaticamente il tuo certificato SSL. Certbot è attivamente sviluppato dalla Electronic Frontier Foundation (EFF) ed è il client consigliato per Let's Encrypt.
Prerequisiti
- Un'istanza Vultr che esegue Ubuntu 16.04
- Un nome di dominio registrato che punta al tuo server
- nginx
Installa Certbot
Per ottenere un certificato SSL Let's Encrypt, devi installare il client Certbot sul tuo server.
Aggiungi il repository. Premere il ENTERtasto quando viene richiesto di accettare.
add-apt-repository ppa:certbot/certbot
Aggiorna l'elenco dei pacchetti.
apt-get update
Procedere installando il pacchetto Nginx di Certbot e Certbot.
apt-get -y install python-certbot-nginx
Configurare Nginx
Certbot configura automaticamente SSL per Nginx, ma per farlo deve trovare il blocco del server nel file di configurazione di Nginx. Lo fa abbinando la server_name
direttiva nel file di configurazione con il nome di dominio per il quale si richiede un certificato.
Se stai utilizzando il file di configurazione predefinito, /etc/nginx/sites-available/default
aprilo con un editor di testo come nano
e trova la server_name
direttiva. Sostituisci il carattere di sottolineatura, _
con i tuoi nomi di dominio:
nano /etc/nginx/sites-available/default
Dopo aver modificato il file di configurazione, la server_name
direttiva dovrebbe apparire come segue. In questo esempio, suppongo che il tuo dominio sia example.com e che tu stia richiedendo un certificato per example.com e www.example.com.
server_name example.com www.example.com;
Procedere verificando la sintassi delle modifiche.
nginx -t
Se la sintassi è corretta, riavviare Nginx per utilizzare la nuova configurazione. Se ricevi messaggi di errore, riapri il file di configurazione e controlla eventuali errori di battitura, quindi riprova.
systemctl restart nginx
Ottenere un certificato SSL Let's Encrypt
Il seguente comando otterrà un certificato per te. Modifica la configurazione di Nginx per usarla e ricarica Nginx.
certbot --nginx -d example.com -d www.example.com
Puoi anche richiedere un certificato SSL per domini aggiuntivi. Aggiungi l' -d
opzione " " tutte le volte che vuoi.
certbot --nginx -d example.com -d www.example.com -d example.net -d example.net
Nel caso in cui si desideri ottenere il certificato da Let's Encrypt senza installarlo automaticamente, è possibile utilizzare il seguente comando. Ciò apporta modifiche temporanee alla configurazione di Nginx per ottenere il certificato e ripristinarli una volta scaricato il certificato.
certbot --nginx certonly -d example.com -d www.example.com
Se si esegue Certbot per la prima volta, verrà richiesto di inserire un indirizzo e-mail e di accettare i termini del servizio. Questo indirizzo e-mail verrà utilizzato per avvisi di rinnovo e sicurezza. Dopo aver fornito un indirizzo e-mail, Certbot richiederà un certificato a Let's Encrypt ed eseguirà una sfida per verificare che controlli il dominio in questione.
Se Certbot può ottenere un certificato SSL, ti verrà chiesto come desideri configurare le tue HTTPS
impostazioni. Puoi reindirizzare i visitatori che visitano il tuo sito Web tramite una connessione non protetta o consentire loro di accedervi tramite la connessione non protetta. Questo di solito dovrebbe essere abilitato perché garantisce che i visitatori accedano solo alla versione protetta del tuo sito web protetta da SSL. Seleziona la tua scelta, quindi premi ENTER.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Infine, Certbot confermerà che il processo è andato a buon fine e in cui sono archiviati i certificati. I certificati sono ora scaricati e installati.
Rinnovo automatizzato
Poiché Let's Encrypt è un'autorità di certificazione gratuita e per incoraggiare gli utenti ad automatizzare il processo di rinnovo, i certificati sono validi solo per 90 giorni. Certbot si occuperà del rinnovo automatico dei certificati. Lo fa correndo certbot renew
due volte al giorno via systemd
.
È possibile verificare che il rinnovo automatico funzioni eseguendo questo comando.
certbot renew --dry-run
È inoltre possibile rinnovare manualmente il certificato in qualsiasi momento eseguendo il comando seguente.
certbot renew
Configurazione avanzata
I comandi sopra ottengono e installano il certificato SSL con una configurazione adatta alla maggior parte dei casi. Se si desidera implementare misure di sicurezza avanzate per il proprio sito Web, è possibile utilizzare il comando seguente per ottenere il certificato.
certbot --nginx --rsa-key-size 4096 --must-staple -d example.com -d www.example.com
Il --rsa-key-size 4096
utilizza una chiave RSA a 4096 bit al posto di 2048 chiave di bit, che è più sicuro. Il rovescio della medaglia di questo è che una chiave più grande si traduce in un leggero sovraccarico di prestazioni. Inoltre, i browser e i dispositivi meno recenti potrebbero non supportare le chiavi RSA a 4096 bit.
La --must-staple
aggiunge l'estensione Staple OCSP must per il certificato e configura Nginx per OCSP pinzatura. Questa estensione consente ai browser di verificare che il certificato non sia stato revocato e che possa essere considerato attendibile. Tuttavia, non tutti i browser supportano questa funzione.