Table of Contents
Server ACME per certificati SECTIGO
I certificati vengono richiesti da una procedura sulla macchina acme.lnf.infn.it, che si preoccupa anche di rinnovarli 60 giorni prima della scadenza.
Per interagire con tale server è disponibile lo script bash acme-local-certs.
Quando acme-local-certs deve caricare i file su acme.lnf.infn.it, chiederà la password per l'utente acme@acme.lnf.infn.it.
Tool per la gestione dei certificati
Per scaricare e "installare" il tool acme-local-certs:
( cd /usr/local/sbin && curl -fO http://acme.lnf.infn.it/acme-local-certs && chmod +x /usr/local/sbin/acme-local-certs ) ( cd /etc && curl -fO http://acme.lnf.infn.it/acme-local-certs.conf && chmod 400 /etc/acme-local-certs.conf )
Il tool ha varie opzioni:
Usage: /var/www/html/acme-local-certs
-h help
-r Send csr to acme.lnf.infn.it
-d Download crt from acme.lnf.infn.it
-w Upload private key+crt to fortigate.lnf.infn.it
-c <file> Config file (default /etc/acme-local-certs.conf)
-H <cn> Use <cn> for cert hostname (CN) (default acme.lnf.infn.it)
-D <path> Use <path> for crt/csr directory (default /etc/pki/tls/certs)
-P <path> Use <path> for key directory (default /etc/pki/tls/private)
Nome Host (CN) personalizzato
Per default il tool acme-local-certs usa l'hostname del nodo su cui gira per determinare il CN del certificato.
È possibile però specificarne uno in /etc/acme-local-certs.conf oppure con l'opzione -H <cn> da usare sempre insieme alle altre opzioni.
Nomi multipli
Per generare certificati con nomi multipli, inserire gli alias nel file di configurazione (default /etc/acme-local-certs.conf)
Directory personalizzate
Per default il tool acme-local-certs mette i file relativi ai certificati nelle directory /etc/pki/tls/certs per csr/crt/chain e /etc/pki/tls/private per la chiave privata.
È possibile specificare delle directory in /etc/acme-local-certs.conf oppure con l'opzione -D <path> per csr/crt/chain e -P <path> per la chiave privata, entrambe da usare sempre insieme alle altre opzioni.
Non è possibile specificare i nomi dei file, che saranno sempre uguali al CN del certificato con suffisso .key, .csr, ecc.
Richiesta Certificato
Il tool genera, se non presenti, sia la chiave privata che la CSR e manda la CSR al server acme.lnf.infn.it, il tutto con il comando:
# acme-local-certs -r
Download certificati
Dopo 20-30 secondi i certificati saranno pronti. Per scaricarli (in /etc/pki/tls/certs/) usare il comando:
# acme-local-certs -d
CRONTAB
Per scaricare sempre i certificati aggiornati è possibile mettere il comando a crontab.
Questo esce con exit-status 0 solo se i file scaricati sono nuovi rispetto a quelli locali.
Quindi si può aggiungere, ad esempio la seguente riga al crontab:
15 10 * * tue /usr/local/sbin/acme-local-certs -d && systemctl reload httpd
Caricamento certificati sul firewall
Per caricare certificato e chiave privata sul nostro Fortigate (con nome <HOST>-acme):
# acme-local-certs -w
La procedura di rinnovo dei certificati aggiornerà inoltre sempre il certificato.
===== Generazione manuale CSR =====
Se necessario un certificato con nomi multipli, prima di lanciare
acme-local-certs -r, generare manualmente la CSR e se non già esistente la relativa chiave privata:
Generazione manuale chiave privata:
# openssl genrsa 4096 > /etc/pki/tls/private/hostname.f.q.d.n.key
# chmod 600 /etc/pki/tls/private/hostname.f.q.d.n.key
Generazione CSR per nomi multipli:
# openssl req -new -sha256 -key /etc/pki/tls/private/hostname.f.q.d.n.key -subj "/C=IT/ST=Rome/L=Frascati/O=INFN/OU=LNF/CN=www.yoursite.com" -reqexts SAN -config <(cat /etc/pki/tls/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:www.yoursite.com,DNS:yoursite.com")) -out /etc/pki/tls/certs/hostname.f.q.d.n.csr
Caricare la CSR su acme.lnf.infn.it:
acme-local-certs [-H host.cn] [-D /path/] [-P /path/] -r
