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