Questo articolo descrive come installare e utilizzare l'utilità Let's Encrypt® Certbot su un server CentOS® 7.
Cos'è Let's Encrypt?
Let's Encrypt è un'autorità di certificazione (CA) che fornisce certificati SSL gratuiti per 90 giorni. I seguenti dettagli provengono dalla loro Pagina Informazioni:
Let's Encrypt è un'autorità di certificazione (CA) gratuita, automatizzata e aperta, gestita a beneficio del pubblico. È un servizio fornito dall'Internet Security Research Group (ISRG).
Diamo alle persone i certificati digitali di cui hanno bisogno per abilitare HTTPS (SSL/TLS) per i siti Web, gratuitamente, nel modo più intuitivo possibile. Lo facciamo perché vogliamo creare un Web più sicuro e rispettoso della privacy.
I principi chiave alla base di Let's Encrypt sono:
- Gratuito :Chiunque possieda un nome di dominio può utilizzare Let's Encrypt per ottenere un certificato attendibile a costo zero.
- Automatico :il software in esecuzione su un server Web può interagire con Let's Encrypt per ottenere un certificato in modo indolore, configurarlo in modo sicuro per l'uso e occuparsi automaticamente del rinnovo.
- Protetto :Let's Encrypt fungerà da piattaforma per promuovere le migliori pratiche di sicurezza TLS, sia dal lato CA sia aiutando gli operatori del sito a proteggere adeguatamente i propri server.
- Trasparente :tutti i certificati emessi o revocati saranno registrati pubblicamente e potranno essere ispezionati da chiunque.
- Aperto :Il protocollo di emissione e rinnovo automatico sarà pubblicato come standard aperto che altri potranno adottare.
- Cooperativa :Proprio come gli stessi protocolli Internet sottostanti, Let's Encrypt è uno sforzo congiunto a beneficio della comunità, al di fuori del controllo di qualsiasi organizzazione.
Qual è la differenza tra Let's Encrypt e altri certificati SSL?
I certificati SSL sono chiavi che aiutano a crittografare i dati del tuo server. I browser Web riconoscono solo i certificati SSL forniti da una nota CA, come DigiCert, GoDaddy, COMODO e così via. Tutte le CA note e affidabili sono membri del CA/Browser Forum (cabforum.org) e seguono una serie rigorosa di requisiti per emettere certificati.
Esistono tre diversi livelli di certificati SSL:
-
Certificato di convalida del dominio (DV) :Questo è un certificato SSL di base che dimostra la proprietà del dominio. Non è necessaria una convalida aggiuntiva.
-
Certificato di convalida organizzativa (OV) :questo certificato non solo dimostra la proprietà del dominio, ma dimostra anche che un'azienda reale, in regola con un'autorità governativa, è proprietaria del dominio.
-
Certificato di convalida estesa (EV) :questo certificato fa un passo avanti rispetto al certificato OV convalidando ulteriormente che l'attività è operativa da almeno tre anni.
Sul back-end, si tratta di differenze significative e svolgono un ruolo importante quando si acquista un certificato da una CA perché è necessario eseguire il processo di convalida.
Sul front-end, non vi è alcuna differenza visibile tra i tre tipi di certificato. La funzionalità del browser utilizzata per differenziare i diversi livelli di certificato è stata deprecata. Per ulteriori informazioni, consulta:I certificati di convalida estesa sono (davvero, davvero) morti
Let's Encrypt, una CA ufficiale nel CA/Browser Forum, offre certificati DV di base gratuiti validi per 90 giorni alla volta. Ciò che rende unico Let's Encrypt è la loro utility Certbot, che puoi installare su un server web per emettere e gestire i tuoi certificati SSL utilizzando processi automatizzati. L'utilizzo di Certbot comporta una minore manutenzione e meno mal di testa. Il periodo di validità di 90 giorni significa che le chiavi del certificato vengono ciclate più spesso, il che fornisce una maggiore sicurezza perché c'è una finestra molto più piccola di una chiave eventualmente composta.
Inizia
Questo articolo è incentrato sull'installazione di Certbot sull'ultima versione di CentOS 7. Il server utilizzato in questo esempio esegue il seguente stack LAMP:
- CentOS Linux® versione 7.8.2003 (principale)
- PHP 7.4.8
- MariaDB® 5.5.65
- Apache® 2.4.6
Le istruzioni e i comandi di questo articolo forniscono le funzioni di base per ottenere un certificato da Let's Encrypt. Certbot non dipende dall'esecuzione di un'applicazione Web, ma richiede un mezzo per convalidare il controllo effettivo del dominio. Questo articolo illustra la convalida utilizzando il metodo webroot, il che significa che stai ospitando il dominio per il quale hai bisogno di un certificato sul server in cui hai installato Certbot.
Importante :le istruzioni dell'articolo utilizzano una configurazione Apache predefinita per un singolo sito sul server. La tua configurazione potrebbe variare a seconda della tua configurazione di Apache.
Installa Certbot
Dopo aver configurato il tuo server per servire la tua pagina web, usa il seguente comando per installare Certbot:
[root@leexample-centos7 ~]# yum install certbot
Certbot richiede le seguenti dipendenze:
=================================================================================================================================
Package Arch Version Repository Size
=================================================================================================================================
Installing:
certbot noarch 1.6.0-1.el7 epel 44 k
Installing for dependencies:
pyOpenSSL x86_64 0.13.1-4.el7 base 135 k
python-ndg_httpsclient noarch 0.3.2-1.el7 epel 43 k
python-requests-toolbelt noarch 0.8.0-3.el7 epel 78 k
python-zope-component noarch 1:4.1.0-5.el7 epel 228 k
python-zope-event noarch 4.0.3-2.el7 epel 79 k
python-zope-interface x86_64 4.0.5-4.el7 base 138 k
python2-acme noarch 1.6.0-1.el7 epel 81 k
python2-certbot noarch 1.6.0-1.el7 epel 374 k
python2-configargparse noarch 0.11.0-2.el7 epel 31 k
python2-future noarch 0.18.2-2.el7 epel 806 k
python2-josepy noarch 1.3.0-2.el7 epel 89 k
python2-mock noarch 1.0.1-10.el7 epel 92 k
python2-parsedatetime noarch 2.4-6.el7 epel 78 k
python2-pyrfc3339 noarch 1.1-3.el7 epel 16 k
python2-six noarch 1.9.0-0.el7 epel 2.9 k
pytz noarch 2016.10-2.el7 base 46 k
Transaction Summary
=================================================================================================================================
Richiedi un nuovo certificato utilizzando Certbot
Con Certbot installato, puoi richiedere un certificato da Let's Encrypt. Prima di procedere, prendi nota dei seguenti elementi:
-
I domini che stai richiedendo. Puoi richiedere fino a 100 domini su un singolo certificato Let's Encrypt.
-
La posizione della directory o delle directory radice dei documenti del tuo sito. Hai bisogno di queste informazioni per il
certbot
comando per installare il file txt per la convalida. Se aggiungi più domini che puntano a directory diverse, devi elencarli tutti nel comando. -
Devi consentire l'accesso a /.well-known/acme-challenge/ directory.
-
Devi escludere /.well-known/acme-challenge/ directory da un reindirizzamento forzato da HTTP a HTTPS.
Nota: La prima volta che esegui Certbot, ti viene chiesto di inserire il tuo indirizzo email e di accettare i termini di servizio.
Esegui il seguente comando con i tuoi dati per richiedere un certificato:
[root@leexample-centos7 ~]# certbot certonly --webroot -w /var/www/vhosts/example.com -d example.com -d www.example.com
Segue una spiegazione degli elementi del comando:
certonly
:una bandiera che dice di emettere solo un certificato e non fare altro. Il comando non esegue alcuna configurazione dell'applicazione Web.--webroot
:dice a Certbot di utilizzare una directory web specificata, ciascuna separata da-w
bandiera.-d
:specifica il dominio da richiedere. Devi avere-d
flag per ogni dominio che desideri sul certificato.
Nota: Se vuoi coprire entrambi i www e non www versioni di un dominio su un unico certificato, devi utilizzare un -d
flag per ciascuno.
Dopo aver immesso il comando, viene visualizzato il seguente output:
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for letest.mccrocklin.space
Using the webroot path /var/www/vhosts/example.com for all unmatched domains.
Waiting for verification...
Se non ci sono problemi con la convalida, viene visualizzato il seguente output:
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2020-10-30. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- 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
Percorsi dei file del certificato
Certbot, per impostazione predefinita, installa i certificati su /etc/letsencrypt/live/
<domain.tld>
è sempre il primo dominio che imposti durante l'esecuzione di certbot
comando. Tienilo a mente quando configuri il tuo host virtuale o i blocchi del server in modo che puntino ai file del certificato.
Puoi aspettarti di vedere i seguenti file nella directory:
[root@leexample-centos7 ~]# ls -al /etc/letsencrypt/live/example.com
total 12
drwxr-xr-x. 2 root root 4096 Aug 1 13:35 .
drwx------. 3 root root 4096 Aug 1 13:35 ..
lrwxrwxrwx. 1 root root 47 Aug 1 13:35 cert.pem -> ../../archive/example.com/cert1.pem
lrwxrwxrwx. 1 root root 48 Aug 1 13:35 chain.pem -> ../../archive/example.com/chain1.pem
lrwxrwxrwx. 1 root root 52 Aug 1 13:35 fullchain.pem -> ../../archive/example.com/fullchain1.pem
lrwxrwxrwx. 1 root root 50 Aug 1 13:35 privkey.pem -> ../../archive/example.com/privkey1.pem
-rw-r--r--. 1 root root 692 Aug 1 13:35 README
Si noti che tutti questi file sono collegamenti simbolici. Questo è importante per il processo di rinnovo automatizzato, descritto nella seguente sezione Rinnovo. Nota i seguenti nomi di file e il loro utilizzo:
- cert.pem è il certificato.
- chain.pem è il bundle CA.
- fullchain.pem è il certificato, seguito dal bundle della CA.
- privkey.pem è la chiave privata.
Configura Apache
Utilizzare i seguenti comandi per configurare Apache:
-
Nella configurazione predefinita di Apache, aggiungi le seguenti righe in /etc/httpd/conf.d/ssl.conf :
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem SSLCACertificateFile /etc/letsencrypt/live/example.com/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
-
Salva le modifiche ed esci.
-
Esegui il comando seguente per eseguire un controllo della sintassi:
httpd -t
-
Se ottieni
Syntax OK
, quindi esegui il seguente comando per ricaricare Apache:systemctl reload httpd
Rinnova i tuoi certificati
I certificati Let's Encrypt hanno una durata di 90 giorni, quindi quando devi rinnovare molti certificati richiesti tramite l'utilità Certbot, il frequente ciclo di rinnovo può essere scoraggiante.
Fortunatamente, Certbot ha una funzione di rinnovo integrata che si occupa di questo per te. Tuttavia, non viene eseguito automaticamente, quindi dovresti programmarlo per l'esecuzione come cron
lavoro. Il processo di rinnovo di Cerbot prevede i seguenti passaggi:
-
Il comando,
certbot renew
, avvia il processo. -
Certbot controlla tutti i certificati che sono stati emessi e installati sul tuo server. Cerca specificamente tutti i certificati che scadranno nei prossimi 30 giorni.
-
Certbot tenta di rinnovare questi certificati in scadenza utilizzando lo stesso metodo di convalida utilizzato per la richiesta di certificato originale.
-
Al termine del rinnovo, Certbot crea nuovi file all'interno di /etc/letsencrypt/archive/
/ directory, incrementando il numero per ogni iterazione di rinnovo e aggiorna i collegamenti simbolici in /etc/letsencrypt/live// .Poiché i nomi dei file del certificato in realtà non cambiano, non è necessario modificare il percorso del file nei file di configurazione del blocco del server hostor virtuale. Questo rende il processo di rinnovo più fluido.
Configura il lavoro cron
È importante notare che la frequenza effettiva del lavoro cron dipende dalla configurazione del server. La funzione di rinnovo esegue la scansione solo dei certificati esistenti finché non ne trova uno in scadenza entro i prossimi 30 giorni. È sicuro impostare il lavoro cron in modo che venga eseguito una volta al giorno durante i periodi di traffico ridotto. Se disponi di molti certificati Let's Encrypt emessi in momenti diversi, può rilevarli quando raggiungono il limite di 30 giorni.
Tuttavia, puoi scegliere di farlo funzionare meno frequentemente. Ad esempio, una volta alla settimana alle 3 del mattino di ogni domenica.
È possibile creare il lavoro cron utilizzando crontab o Anacron dell'utente root. Anacron garantisce che il lavoro cron venga eseguito anche se è stato perso durante i tempi di inattività del server.
Utilizzare i seguenti passaggi per creare il processo cron:
-
Conferma il percorso corretto eseguendo direttamente il comando:
[root@leexample-centos7 ~]# which certbot /usr/bin/certbot
-
Determina quale metodo cron vuoi utilizzare:
-
Anacron :crea un nuovo file in
/etc/cron.weekly/
- puoi nominarlo qualcosa comecertbotrenew
-
Cron :usa
crontab -e
-
-
Crea la voce cron, come la seguente, nel metodo scelto:
0 3 * * 0 /usr/bin/certbot renew
-
Salva il file.
Conclusione
Let's Encrypt è un'ottima alternativa per ottenere certificati SSL gratuiti per i tuoi domini. Questi certificati sono certificati DV, il che significa che convalidano solo la proprietà del dominio. Questo articolo illustra le funzioni di base dell'utilità Let's Encrypt Certbot. Se hai bisogno di opzioni aggiuntive e funzionalità più avanzate, puoi ottenere ulteriore assistenza dalla community Let's Encrypt:
- Crittografiamo
- Crittografiamo la documentazione
- Crittografiamo il forum della community