GNU/Linux >> Linux Esercitazione >  >> Linux

Installa e usa l'utilità Lets Encrypt Certbot su CentOS 7 con Apache

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:

  1. 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
    
  2. Salva le modifiche ed esci.

  3. Esegui il comando seguente per eseguire un controllo della sintassi:

    httpd -t
    
  4. 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:

  1. Il comando, certbot renew , avvia il processo.

  2. 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.

  3. Certbot tenta di rinnovare questi certificati in scadenza utilizzando lo stesso metodo di convalida utilizzato per la richiesta di certificato originale.

  4. 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:

  1. Conferma il percorso corretto eseguendo direttamente il comando:

    [root@leexample-centos7 ~]# which certbot
    /usr/bin/certbot
    
  2. Determina quale metodo cron vuoi utilizzare:

    • Anacron :crea un nuovo file in /etc/cron.weekly/ - puoi nominarlo qualcosa come certbotrenew

    • Cron :usa crontab -e

  3. Crea la voce cron, come la seguente, nel metodo scelto:

    0 3 * * 0 /usr/bin/certbot renew
    
  4. 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

Linux
  1. Proteggi Apache con Lets Encrypt su CentOS 7

  2. Come installare Shopware con NGINX e Lets Encrypt su CentOS 7

  3. Come installare WonderCMS con Nginx e Lets Encrypt SSL su CentOS 7

  4. Come installare Let's Encrypt con Apache su CentOS 7

  5. Installa Apache e PHP su CentOS 7

Come installare Shopware 6 con NGINX e Lets Encrypt su CentOS 8

Come installare PrestaShop con Apache e Lets Encrypt SSL su CentOS 8

Installa TaskBoard con Apache e lascia Encrypt SSL su Debian 11

Come installare InvoicePlane con Apache e Free Lets Encrypt SSL Certificate su Debian 11

Come installare Let's Encrypt SSL con Apache su CentOS 7

Come proteggere Apache con Let's Encrypt SSL Certificate su CentOS 8