Differences between revisions 6 and 7
Revision 6 as of 2016-06-08 10:21:18
Size: 5290
Editor: Kurgan
Comment:
Revision 7 as of 2016-11-19 16:30:13
Size: 5235
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
== Questa e` una bozza incompleta di documentazione. ==

Let's Encrypt

Installazione del client acme.sh

Il client acme.sh non e` il client ufficiale di Let's Encrypt, e` un client di terza parte che non richiede altro che bash e wget per girare. Puo` essere eseguito anche se non si e` root, pero` dovete ricordarvi che lo script deve poter scrivere dentro la vostra webroot (o accedere alle config del vostro dns) per funzionare.

  • Scaricare lo zip per l'installazione da https://github.com/Neilpang/acme.sh (o usare la copia locale qui allegata, pero` ovviamente questa e` vecchia acme.sh-master.zip)

  • Unzippare il pacchetto master.zip
  • eseguire come richiesto la installazione ./acme.sh install. Il risultato sara` che avete il vostro script dentro alla vostra home, sotto la directory .acme.sh/ e che in cron dell'utente dal quale avete installato verra` messa una chiamata a acme.sh per il rinnovo automatico dei certificati.

Uso del client acme.sh

Per creare i certificati e` necessario un metodo di "autenticazione" del dominio, il piu` comodo per l'automatismo e` un web server che risponda all'hostname (www.dominio.tld, webmail.dominio.ltd, ecc) per il quale vogliamo generare il certificato. In pratica il sistema di Let's Encrypt deve poter scaricare un file dal vostro web server, file che viene generato da acme.sh. Questo significa anche che acme.sh deve poter scrivere nella webroot del vostro web server. (se lo eseguite da root, no problem)

Lo script salvera` i certificati generati, con anche le relative configurazioni, come ad esempio i comandi che lo script in cron deve eseguire per riavviare i demoni che usano i certificati in seguito al rinnovo degli stessi, nella home dell'utente sotto a .acme.sh/. Per comodita` insegno allo script acme.sh a copiare i certificati sotto a /etc/letsencrypt dove saranno a disposizione di tutti i demoni che devono usarli, avendo cura anche di concatenare i vari cert delle varie CA necessari per costruire la corretta catena di trust.

  • Creare il certificato (anche piu` di uno, ovviamente) Ricorda che la webroot deve coincidere con l'hostname (named virtual, nel caso), altrimenti la verifica automatica fallisce. In questo esempio l'hostname mater.kurgan.org non e` un named virtual, e non ha una webroot personale, ma usa il default /var/www (/var/www/html in certe installazioni di Apache, come ad esempio centos o debian 8)
     # acme.sh --issue  -d <hostname per il cert> -w <path webroot>
     acme.sh --issue  -d mater.kurgan.org -w /var/www/
  • Se vogliamo fare un certificato con diversi hostname, basta mettere piu` di una volta il parametro "-d hostname". Otterremo un certificato valido per tutti gli hostname (ad esempio, con e senza www).
  • Se vogliamo farne altri, non dobbiamo fare altro che ripetere il comando con i giusti parametri per hostname e webroot. Notare che tutti i cert che generiamo verranno automaticamente rinnovati dallo script in cron.
  • verificare in cron che ci sia il renew automatico (crontab -e)
  • creare la directory /etc/letsencrypt (o quella che volete voi, per metterci i certificati che poi vanno letto dai vari demoni che li usano)
  • eseguire il comando per mettere le chiavi dentro a /etc/letsencypt. Notare che questo comando salva i certificati dell'host e della CA concatenati (fullchain) e non il singolo certificato nel file "cer", per poter costruire la chain of trust corretta. Questo comando fra l'altro riavvia i demoni che usano i certificati. Una volta eseguito questo comando, al momento del rinnovo lo script in cron automaticamente eseguira` nuovamente questo comando, copiando i certificati e riavviando i demoni. All'atto pratico i parametri che passiamo a questo comando vengono salvati nella configurazione di acme.sh relativa all'hostname per questo certificato, ed eseguiti automaticamente ad ogni rinnovo.
    acme.sh --installcert -d mater.kurgan.org --keypath /etc/letsencrypt/mater.kurgan.org.key --fullchainpath /etc/letsencrypt/mater.kurgan.org.cert --reloadcmd "service exim4 reload; service apache2 reload; service dovecot reload"
  • modificare le config dei vari demoni (apache, exim, dovecot nell'esempio) per leggere i certificati dai files giusti.
  • ricaricare i vari demoni
  • verificare, dopo 80 giorni, se l'autorenew ha funzionato

Config e test per Apache2

La configurazione minimale di Apache 2.2 e` questa:

SSLCertificateFile /etc/letsencrypt/mater.kurgan.org.cert
SSLCertificateChainFile /etc/letsencrypt/mater.kurgan.org.cert
SSLCertificateKeyFile /etc/letsencrypt/mater.kurgan.org.key

La configurazione minimale di Apache 2.4.8 o successivo non richiede piu` "SSLCertificateChainFile".

Per testare se tutto funziona, potete usare questo servizio: https://www.ssllabs.com

Config per Dovecot

La configurazione minimale per Dovecot e`:

ssl_cert = </etc/letsencrypt/mater.kurgan.org.cert
ssl_key =  </etc/letsencrypt/mater.kurgan.org.key

Config per Exim 4

La configurazione minimale per Exim 4 e`:

tls_certificate = /etc/letsencrypt/mater.kurgan.org.cert
tls_privatekey =  /etc/letsencrypt/mater.kurgan.org.key
tls_advertise_hosts = *

LetsEncrypt (last edited 2023-01-17 09:10:04 by Kurgan)