====== 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