====== 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 Config file (default /etc/acme-local-certs.conf)
-H Use for cert hostname (CN) (default acme.lnf.infn.it)
-D Use for crt/csr directory (default /etc/pki/tls/certs)
-P Use 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 '' 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 '' per csr/crt/chain e ''-P '' 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 -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