Panoramica #
Let's Encrypt è un'autorità di certificazione aperta e automatizzata che utilizza l'estensione ACME (Ambiente di gestione certificati automatico) protocollo per fornire certificati TLS / SSL gratuiti a qualsiasi client compatibile. Questi certificati possono essere utilizzati per crittografare le comunicazioni tra i server Web e gli utenti.
Questo tutorial discuterà brevemente delle autorità di certificazione e di come RELIANOID l'integrazione funziona con Let's Encrypt, quindi esamina come RELIANOID utilizza l' certbot (Client ACME) per poter comunicare con l'infrastruttura Let's encrypt.
RELIANOID Load Balancer 6.0.3 o versione successiva include un piccolo wrapper certbot chiamato letsencryptz per poter utilizzare la funzionalità di webroot di Certbot, le seguenti righe spiegano come funziona questo wrapper, si prega di tenerne conto al fine di farlo funzionare negli ambienti di produzione.
Come funziona la convalida di Let's Encrypt? #
Come breve descrizione della funzionalità webroot, il plug-in webroot funziona creando un file temporaneo per ciascuno dei domini richiesti nel file RELIANOID percorso del file /usr/local/relianoid/app/letsencryptz/webroot/.well-known/acme-challenge/. Quindi il server di convalida Let's Encrypt effettua richieste HTTP per convalidare che il DNS per ogni dominio richiesto si risolva nel server che esegue il wrapper di letsencryptz e il file temporaneo per scopi di convalida è accessibile, il diagramma seguente descrive un esempio reale:
Nel diagramma precedente, RELIANOID Il bilanciatore del carico si trova dietro un router/firewall con un indirizzo IP pubblico 185.79.20.147 (ad esempio), il traffico HTTP e HTTPS è nattato al bilanciamento del carico interno con VIP 192.168.101.31 (ad esempio), in cui il bilanciamento del carico è configurato con 2 farm differenti:
Nome dell'azienda HTTPS Web hosting via 192.168.101.31:443. Questa farm è responsabile dell'offerta di web hosting, diversi server web sono pubblicati insieme a questo su Internet. Per esempio, test1.relianoid.com, test2.relianoid.com, test3.relianoid.com stanno testando le pagine web pubblicate su questo servizio virtuale tra gli altri.
Nome farm HTTP WebhostingRedirect via 192.168.101.31:80. Questa farm viene utilizzata solo per scopi di reindirizzamento, impone tutto il traffico da HTTP a HTTPS.
Il diagramma precedente descrive una richiesta di certificato SSL Let's Encrypt per il dominio test1.relianoid.com come segue:
1. Una richiesta di certificato viene inviata dal sistema di bilanciamento del carico stesso all'infrastruttura Let's Encrypt.
2. Let's encrypt rileva la nuova richiesta di certificato SSL per test1.relianoid.com
3. Facciamo crittografare, eseguire una risoluzione IP DNS per l'host richiesto: test1.relianoid.com controllando che il risultato sia l'IP pubblico, lo stesso IP di origine che ha avviato la richiesta.
4. A questo punto Let's encrypt annuncia a letsencryptz script (webroot cerbot) che ha bisogno di creare un file con a HASH nel percorso pubblico http://test1.relianoid.com/.well-know/acme-challenge/ (80 TCP Port), Directory locale /usr/local/relianoid/app/letsencryptz/webroot/.well-known/acme-challenge/. Poi, letsencryptz configura un servizio temporale per rendere questo file accessibile da Internet (la fattoria WebhostingRedirect sta per essere modificato per questo scopo. Se la farm non è già configurata letsencryptz creerà uno temporale in questo VIP e Port).
6. Non appena letsencryptz conferma la creazione del servizio temporaneo, i server Lets Encrypt verificano che il file di validazione temporale sia stato creato e il file HASH il contenuto è corretto
7. Infine, i server Let's Encrypt rispondono alla prima richiesta con il certificato già creato per il Nome comune (CN) test1.relianoid.com.
8. RELIANOID memorizzerà il certificato già creato nel percorso locale /usr/local/relianoid/config/ ed è pronto per essere configurato nella farm Web hosting.
In questa fase, il nuovo certificato Let's Encrypt verrà utilizzato per il servizio virtuale HTTPS.
Crittografiamo i comandi di automazione #
Come descritto, il letsencryptz lo script automatizza le azioni richieste per gestire i certificati SSL come creare, rinnovare, distruggere o elencare, tra gli altri. Trova sotto i comandi disponibili.
root@zva6k:~# letsencryptz Descrizione di letsencryptz: letsencryptz è un wrapper Let's Encrypt (certbot) con parametri minimi pronto per gestire i certificati Let's Encrypt per i profili https di Relianoid. Tieni presente che questo wrapper utilizza la funzionalità certbot webroot, quindi l'architettura pubblica di Let's Encrypt richiede di connettersi a un IP virtuale e una porta locali (TCP 80 per impostazione predefinita) per convalidare la richiesta per il dominio richiesto; quindi, non appena viene utilizzato il parametro "obtain", questo script configurerà una farm HTTP a cui Let's Encrypt accederà per scopi di verifica. Questa configurazione viene eseguita automaticamente da questo script stesso. Assicurati solo che l'IP virtuale e la porta HTTP 80 utilizzati non siano utilizzati da un'altra farm con bilanciamento del carico e che la risoluzione DNS per il dominio richiesto sia raggiungibile dal sistema Let's Encrypt.
utilizzo: /usr/local/relianoid/bin/letsencryptz azione: --obtain | --destroy | --renew | --list | --listconf | --help --obtain: Richiedi nuovi certificati utilizzando il modulo cert-bot di webroot.
comandi: --vip --azienda agricola --dominio --dominio --dominio --test --vip: l'IP virtuale già configurato dovrebbe pubblicare un server web temporaneo; questo verrà connesso ai server pubblici Let's Encrypt per verificare la richiesta del certificato. L'IP virtuale deve essere libero sulla porta 80 per poter essere vincolato da un processo locale; se non è libero, utilizzare invece --farm.
--farm: Nome della farm che configura un servizio temporaneo denominato "letsencryptz". Se non viene utilizzata alcuna farm, verrà configurata una farm temporanea denominata "letsencryptRelianoid" nell'IP virtuale selezionato.
--domain: Il dominio per cui è richiesto il certificato, ad esempio www.miaazienda.com.
--test: parametro facoltativo, se utilizzato il certificato viene richiesto a scopo di test.
--destroy: revoca ed elimina il nome del certificato indicato, l'azione viene rifiutata se il certificato specificato è in uso da una farm.
comandi: --certname --certname: Nome del certificato, questo valore può essere ottenuto dall'azione --list.
--renew: Rinnova i certificati prossimi alla scadenza, non sono necessari comandi comandi: --test --forcerestart --vip --azienda agricola --test: parametro facoltativo, se utilizzato viene eseguita una prova di prova, viene simulato il rinnovo dei certificati.
--forcerestart: parametro facoltativo, se utilizzato, le farm che utilizzano i certificati rinnovati verranno riavviate per applicare le modifiche.
--vip: IP virtuale già configurato su cui pubblicare un server web temporaneo; questo verrà connesso ai server pubblici Let's Encrypt per verificare il rinnovo del certificato. L'IP virtuale deve essere libero sulla porta 80 per poter essere vincolato da un processo locale; se non è libero, utilizzare invece --farm.
--farm: Nome della farm che configura un servizio temporaneo denominato "letsencryptz". Se non viene utilizzata alcuna farm, verrà configurata una farm temporanea denominata "letsencryptRelainoid" nell'IP virtuale selezionato.
--list: Elenca tutti i certificati locali gestiti da Let's Encrypt e il loro stato, non sono necessari comandi.
--listconf: elenca ilRELIANOID
Ci vorrà del tempo la prima volta che viene eseguito letsencryptz perché il sistema installerà automaticamente le dipendenze non risolte, inoltre viene eseguita una revisione della configurazione prima di iniziare a usarlo, Let's Encrypt richiede un account di posta elettronica o contatti per scopi relativi ai certificati, questo account di posta elettronica verrà utilizzato durante qualsiasi azione eseguita contro il sistema Let's Encrypt, questa email può essere configurata nel file di configurazione principale /usr/local/relianoid/config/global.conf, direttiva $ le_email.
Di seguito sono riportati alcuni esempi di utilizzo.
RELIANOID Crittifichiamo la creazione del certificato #
Questo comando richiede un nuovo certificato per il dominio test2.relianoid.com. Tieni presente che il VIP dato sarà quello interno, il cui traffico dovrebbe essere nattato dall'IP pubblico a quello interno. Se Let's Encrypt non è in grado di raggiungere questo servizio, la richiesta verrà rifiutata.
root@zva6k:~# letsencryptz --obtain --vip 192.168.101.31 --domain test2.relianoid.com ATTENZIONE: Nessun nome di farm specificato, verrà creata una farm temporanea con nome letsencryptRelianoid nella porta VIP 192.168.101.31 80. Configurazione della farm per let's encrypt Verifica del nome del certificato Ottenimento del certificato per i domini test2.relianoid.com... Salvataggio del registro di debug in /var/log/letsencrypt/letsencrypt.log Plugin selezionati: Authenticator webroot, Installer Nessuno Ottenimento di un nuovo certificato Percorso/i non standard, potrebbe/potrebbero non funzionare con crontab installato dal gestore pacchetti del sistema operativo Richiesta di certificato per i domini test2.relianoid.com OK Nome certificato creato test2.relianoid.com in formato PEM pronto per il profilo HTTPS Distruzione della configurazione webroot per la farm letsencryptRelianoid Eliminazione della configurazione già esistente per letsencryptRelianoid, servizio letsencryptz Riavvio delle farm utilizzando certificati rinnovati:
RELIANOID Crittifichiamo l'elenco dei certificati #
L'esecuzione di questo comando mostrerà i certificati correnti gestiti da RELIANOID Crittifichiamo il sistema.
root@zva6k:~# letsencryptz --list Elenca tutti i certificati disponibili per la configurazione corrente nella directory di configurazione /usr/local/relianoid/config/letsencrypt/ Salvataggio del registro di debug in /var/log/letsencrypt/letsencrypt.log Nome certificato: test1.relianoid.com Dominio(i): test1.relianoid.com Data di scadenza: 2019-09-19 10:48:02+00:00 (VALIDO: 77 giorni) File certificato PEM: /usr/local/relianoid/config/test1_relianoid_es.pem Nome certificato: test3.relianoid.com Dominio(i): test3.relianoid.com Data di scadenza: 2019-09-26 06:32:52+00:00 (VALIDO: 83 giorni) File certificato PEM: /usr/local/relianoid/config/test3_relianoid_es.pem
Prendi in considerazione il campo Nome del certificato, questo campo verrà riconosciuto dal wrapper letsencryptz come –Certname.
RELIANOID Crittografiamo il rinnovo del certificato #
Il comando precedente controlla se qualche certificato già generato richiede un rinnovo, nel qual caso il rinnovo verrà eseguito automaticamente. Tenere presente che se si utilizza il certificato rinnovato, è necessario riavviare la farm per applicare la modifica, utilizzare l'opzione –Forcerestart se si desidera letsencryptz riavvia tutte le farm necessarie per applicare le modifiche.
root@zva6k:~# letsencryptz --renew --vip 192.168.101.31 Rinnovo di tutti i certificati richiesti Salvataggio del registro di debug in /var/log/letsencrypt/letsencrypt.log Certificato non ancora in scadenza per il rinnovo Certificato non ancora in scadenza per il rinnovo
RELIANOID Crittografiamo la cancellazione del certificato #
Questo comando revoca ed elimina il certificato dato. Nel caso in cui il sistema rilevi che il certificato selezionato è attualmente in uso da qualsiasi farm HTTPS, l'azione verrà rifiutata, nell'esempio sopra l'azione di eliminazione viene rifiutata perché il certificato è in uso dalla farm testhttps.
root@zva6k:~# letsencryptz --destroy --certname test3.relianoid.com Revoca ed eliminazione del/i certificato/i test3.relianoid.com per la configurazione corrente... Questo file non può essere eliminato perché è utilizzato dalla/e farm: testhttps
Non appena il certificato non viene assegnato dalla farm, l'azione verrà eseguita:
root@zva6k:~# letsencryptz --destroy --certname test3.relianoid.com Revoca ed eliminazione del/i certificato/i test3.relianoid.com per la configurazione corrente... Salvataggio del registro di debug in /var/log/letsencrypt/letsencrypt.log Eliminati i certificati test3.relianoid.com nel percorso /usr/local/relianoid/config/test3_relianoid_es.pem
Migrare Crittografiamo i certificati su RELIANOID #
RELIANOID Il bilanciatore del carico salva tutti i file di configurazione di certbot nel percorso locale / Usr / local / zevenet / config / letsencrypt /. Per spostare i file di configurazione di certbot esistenti (per impostazione predefinita in / Etc / letsencrypt) di un altro Server a RELIANOID, devi solo creare un tarball (file tar.gz) di questa directory di configurazione esistente nel tuo server e decomprimere il contenuto nella RELIANOID Crittifichiamo il percorso di configurazione. Infine, considera la possibilità di modificare la variabile $ le_email nel file global.conf alla stessa email utilizzata nelle richieste precedenti.
Let's Encrypt Certificates Clustering support #
RELIANOID Il plugin Let's Encrypt è totalmente supportato RELIANOID Servizio di gruppo. Tutte le azioni di Let's Encrypt vengono salvate in un file di configurazione replicato dal file RELIANOID Servizio cluster, quindi qualsiasi azione eseguita nel file MASTER il nodo verrà replicato nel SCHIAVO nodo automaticamente, ma qualsiasi azione eseguita in SCHIAVO il nodo relativo a Let's Encrypt verrà scartato per evitare qualsiasi desincronizzazione.
Let's Encrypt certificati rinnovo automatico #
RELIANOID Il plug-in Let's Encrypt può essere configurato per verificare quotidianamente se alcuni certificati necessitano di un rinnovo, nel caso in cui il sistema rinnovi automaticamente un determinato certificato ed è utilizzato da qualche farm, la farm verrà riavviata automaticamente per applicare il certificato modifica.
Per configurare il rinnovo automatico, procedi come segue:
Crea il seguente file cron /etc/cron.d/letsencryptz con il seguente contenuto:
root@zva6k:~# cat /etc/cron.d/letsencryptz 00 00 * * * root /usr/local/relianoid/bin/letsencryptz --renew --forcerestart --vip 192.168.101.31
Con questa configurazione, il controllo del rinnovo verrà eseguito ogni giorno alle 00:00 (mezzanotte). E il VIP 192.168.101.31 verrà utilizzato nella porta 80 a scopo di verifica da Let's Encrypt System.
Referenze #
Alcuni riferimenti utilizzati in questo articolo sono:
Webroot e Certbot
Come funziona Let's Encrypt
