GNU/Linux >> Linux Esercitazione >  >> Linux

Come gestire i certificati Lets Encrypt SSL/TLS con certbot

Crittografiamo è un'autorità di certificazione (CA) automatizzata e aperta gestita da Internet Security Research Group (ISRG) e fondata da Electronic Frontier Foundation (EFF), Mozilla Foundation e altri. Fornisce certificati SSL/TLS gratuiti che vengono comunemente utilizzati per crittografare le comunicazioni a fini di sicurezza e privacy, il caso d'uso più notevole è HTTPS. Let's Encrypt si affida al protocollo ACME (Automatic Certificate Management Environment) per emettere, revocare e rinnovare i certificati. Certbot è un'utilità gratuita e open source utilizzata principalmente per la gestione di certificati SSL/TLS da Let's Encrypt autorità di certificazione. È disponibile per la maggior parte dei sistemi operativi UNIX e simili a UNIX, inclusi GNU/Linux, FreeBSD, OpenBSD e OS X. Questa guida fornirà un'introduzione indipendente dalla piattaforma all'uso di certbot.

NOTA: Poiché certbot è in lavorazione, alcune funzionalità o comportamenti descritti in questa guida potrebbero differire nelle versioni precedenti o future.

Requisiti

  • Un nome di dominio registrato con un record A che punta al tuo indirizzo IPv4. `www.example.com` verrà utilizzato come esempio.
  • Accesso a una shell privilegiata.

Concetti generali

Modalità operative

L'utilizzo di certbot per abilitare HTTPS può essere suddiviso in due parti:autenticazione e installazione. Il primo richiede la risoluzione di una sfida e il salvataggio del certificato e di altri file. La fase di installazione prevede la configurazione e la protezione del server web. Certbot può eseguire automaticamente entrambi, con il sottocomando run. I sottocomandi certonly e install sono rispettivamente per i passaggi di autenticazione e installazione.

Certbot include anche funzionalità di rinnovo e revoca dei certificati.

Sfide

L'ottenimento di un certificato Let's Encrypt implica la risoluzione di una sfida di convalida del dominio emessa da un server ACME (Automatic Certificate Management Environment). Questa sfida verifica la tua proprietà dei domini per i quali stai cercando di ottenere un certificato. Esistono diversi tipi di sfida, il più comunemente usato è HTTP-01. Come suggerisce il nome, utilizza il protocollo HTTP. Sebbene i server HTTP possano essere configurati per utilizzare qualsiasi porta TCP, questa sfida funzionerà solo sulla porta 80 a causa delle misure di sicurezza. DNS-01 è un altro tipo di sfida meno popolare basato sulla risoluzione DNS. Tieni presente che i certificati con caratteri jolly non sono ottenibili tramite la sfida HTTP-01. Questa guida inizialmente si concentrerà su HTTP-01.

Plugin

Certbot si basa sui plug-in per eseguire l'autenticazione e l'installazione. Plugin come webroot e standalone eseguono solo l'autenticazione, mentre altri come i plug-in Apache e Nginx sono progettati per ottenere e installare automaticamente i certificati (ovvero la configurazione del server web). Altri plug-in includono diversi plug-in DNS specifici del fornitore per l'autenticazione DNS-01. La maggior parte dei plug-in di certbot viene installata separatamente, ad eccezione dei plug-in webroot e standalone che sono integrati.

Installazione di Certbot

La maggior parte delle distribuzioni Linux fornisce certbot nei propri repository ufficiali. Di seguito sono riportate le istruzioni di installazione per le piattaforme ampiamente utilizzate.

Debian e Ubuntu:

apt update
apt install -y certbot

CentOS 7:

yum install -y certbot

Fedora e CentOS 8:

dnf install -y certbot

Arch Linux:

pacman -Sy certbot

FreeBSD:

pkg install py36-certbot

OpenBSD 6.0 e versioni successive:

pkg_add certbot

MacOS (richiesto homebrew):

brew install letsencrypt

Altro:

Se un pacchetto certbot non è disponibile per la tua piattaforma, puoi utilizzare lo script ufficiale certbot-auto wrapper per installare certbot automaticamente sul tuo sistema. Può essere scaricato qui.

Utilizzo di Certbot

Certificati di quotazione

Per visualizzare un elenco dei certificati gestiti da certbot sul tuo server, impartisci il comando:

certbot certificates

Come ottenere un certificato per la configurazione manuale

Se scegli di configurare manualmente il tuo server web, l'ottenimento di un certificato può essere fatto in due modi. O fornendo a certbot l'accesso alla directory principale web del tuo server (ovvero il plugin webroot) o implementando un server web autonomo temporaneo sulla porta 80 (cioè il plugin standalone). Quest'ultimo plugin è utile nei casi in cui l'integrazione con il tuo server web esistente è impossibile o non desiderata. Per comodità e rinnovi più semplici, sii coerente con il plugin utilizzato.

Utilizzo di un server web esistente

Per utilizzare il tuo server web esistente, assicurati che sia in esecuzione e in ascolto sulla porta 80 prima di eseguire il comando seguente

certbot certonly --webroot

Ti verrà chiesto di inserire, tra le altre informazioni, i tuoi nomi di dominio e il percorso della tua webroot, che è `/var/www/html/` per impostazione predefinita sulla maggior parte dei sistemi Linux. In alternativa, puoi specificare le informazioni richieste come argomenti del comando. Ad esempio:

certbot certonly --webroot --webroot-path /var/www/html --agree-tos -m [email protected] -d www.example.com

Utilizzo del server web autonomo

Per utilizzare il server autonomo, assicurati innanzitutto la disponibilità della porta 80. Puoi verificare la presenza di eventuali processi associati a quella porta utilizzando:

ss -lntp 'sport = 80'

Se necessario, interrompere il servizio/processo incriminato prima di procedere. Quindi, impartisci il comando:

certbot certonly --standalone

Una volta emesso il certificato, dovrai configurare manualmente il tuo server web. I file rilevanti possono essere trovati in /etc/letsencrypt/live/tuo_dominio.

Installazione HTTPS interattiva

Come accennato in precedenza, certbot può automatizzare l'intero processo di configurazione HTTPS, inclusa la configurazione del server web. I plugin sono disponibili sia per Apache che per Nginx e potrebbe essere necessario installare un pacchetto separato. Installa il plug-in certbot specifico per il tuo server web, quindi esegui `certbot run --PLUGIN_NAME`. Dimostreremo l'intero processo per Apache su un sistema Debian 10. Il processo per Nginx è simile.

apt install -y python-certbot-apache
certbot run --apache

Supponendo che il tuo server web sia già configurato per i tuoi nomi di dominio, certbot analizzerà la configurazione esistente e ti chiederà di scegliere per quali nomi di dominio HTTPS deve essere attivato. Se il tuo server web non è configurato, o se certbot non riesce a rilevare i tuoi nomi di dominio, inserisci semplicemente i tuoi nomi di dominio manualmente quando richiesto. Ad esempio:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

Certbot creerà un nuovo file di configurazione di Apache per il tuo nuovo host virtuale HTTPS e ti chiederà se il traffico HTTP deve essere reindirizzato a HTTPS. A meno che tu non abbia validi motivi per non farlo, dovresti abilitare il reindirizzamento a HTTPS.

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): 2
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/www.example.com.conf to ssl vhost in /etc/apache2/sites-available/www.example.com-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.example.com

Rinnovo certificati

Rinnovo manuale

Per rinnovare i tuoi certificati con certbot, puoi utilizzare il sottocomando rinnova. Durante il rinnovo, certbot utilizzerà gli stessi plug-in e le stesse opzioni utilizzate per l'emissione originale. I certificati vengono rinnovati solo se scadono in meno di 30 giorni, quindi questo sottocomando può essere utilizzato con la frequenza desiderata, poiché non eseguirà alcuna azione se i certificati non sono prossimi alla data di scadenza. Il comando è semplicemente:

certbot renew

Se il plug-in autonomo è stato utilizzato per emettere un certificato, sarà necessario arrestare il server Web affinché il rinnovo abbia esito positivo. Puoi farlo usando i ganci. Ad esempio, se il sistema esegue Apache, il comando sarebbe:

certbot renew --pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service"

Rinnovo automatico

Molte distribuzioni hanno abilitato i rinnovi automatici per impostazione predefinita, tramite timer di sistema o processi cron. Puoi controllare i timer di sistema con:

systemctl list-timers

E per i lavori cron utilizzando:

ls /etc/cron*

Se il plug-in webroot è stato utilizzato per l'emissione, i rinnovi automatici dovrebbero avere esito positivo finché il server Web è in esecuzione. Con il plug-in standalone, tuttavia, il comando di rinnovo automatico predefinito fallirà nel caso in cui un server Web sia in esecuzione, poiché certbot non sarà in grado di collegarsi alla porta 80. È quindi necessario modificarlo con l'aggiunta di hook, come mostrato sopra.

Revocare i certificati

La revoca di un certificato può essere ottenuta specificando il percorso o il nome del certificato:

certbot revoke --cert-name cert_name
(OR)
certbot revoke --cert-path /path/to/cert.pem

Ad esempio:

certbot revoke --cert-name www.example.net

Dopo aver eseguito il sottocomando di revoca, certbot chiederà se i file del certificato devono essere eliminati. Se scegli di non eliminarli, il certificato revocato verrà rinnovato durante l'occorrenza di rinnovo successiva. Diverse opzioni autoesplicative possono essere passate al sottocomando di revoca:

  • --delete-after-revoke (richiede la scelta dell'utente per impostazione predefinita)
  • --no-delete-after-revoke (richiede la scelta dell'utente per impostazione predefinita)
  • --motivo [non specificato, compromesso chiave, affiliazione modificata, sostituito, cessazione dell'operazione] (impostazione predefinita:non specificato)

Certificati con caratteri jolly

Un singolo certificato con caratteri jolly può essere utilizzato per identificare più sottodomini, in alternativa ai certificati regolari separati. Per ottenere un certificato con caratteri jolly, è necessario utilizzare la sfida DNS-01. Sebbene siano disponibili diversi plug-in specifici del fornitore che automatizzano il processo di autenticazione ACME, spiegheremo il processo manuale, indipendente dal fornitore. È necessario l'accesso ai server dei nomi per il tuo dominio.

Utilizzare il comando seguente per richiedere un certificato con caratteri jolly:

certbot certonly --manual --preferred-challenges dns-01 -d *.example.net

Certbot visualizzerà un valore che dovrebbe essere distribuito in un record TXT DNS. Questo record TXT funge da convalida della proprietà necessaria.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.example.net with the following value:
y77OkxXi89sJLjUgYu-HReYrcVlxt_bfG8yVOVKngBOcU
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Dovrai creare il record specificato nel tuo pannello di controllo DNS prima di procedere. Una volta creato il record, attendere alcuni minuti prima di premere Invio, che attiva il server ACME per verificarlo. In alcuni casi, potrebbe essere necessario un tempo di attesa più lungo affinché il nuovo record si propaghi correttamente e sia accessibile. In caso di successo, il certificato, la catena e la chiave privata verranno salvati in /etc/letsencrypt/live/example.com/.

Riferimenti e informazioni aggiuntive

  • Repository ufficiale di Certbot Github
  • Ambiente di gestione automatica dei certificati (ACME) RFC 8555
  • Documentazione EFF Certbot
  • Pagina man di Certbot(1)

Linux
  1. Come proteggere i tuoi servizi di posta elettronica Linux con SSL/TLS

  2. Come proteggere un account abilitato per cPanel con un certificato SSL Lets Encrypt

  3. Come proteggere un account abilitato per cPanel con un certificato SSL Sectigo

  4. Protezione di ISPConfig 3.1 con un certificato SSL gratuito Lets Encrypt

  5. Come configurare VSFTPD con connessione crittografata SSL/TLS?

Come installare Let's Encrypt SSL con LEMP su AlmaLinux 8

Come rinnovare automaticamente Let's Encrypt certificati SSL

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

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

Come monitorare i certificati SSL/TLS con Checkmk

Come proteggere Nginx con Let's Encrypt certificato SSL