Nota bene: Attualmente HARICA non offre un servizio ACME completo, pertanto le istruzioni che seguono riguardano solo l'utilizzo con la CA libera Let's Encrypt, e saranno aggiornate una volta che il servizio fornito da HARICA sarà più maturo.
ACME¶
Il protocollo ACME, Automated Certificate Management Environment, è uno standard IETF (RFC 8555) per la gestione automatizzata dei certificati X.509.
Il protocollo ACME è stato implementato per la prima volta da Let's Encrypt, la Certification Authority libera e gratuita gestita dal Internet Security Research Group (ISRG). E' bene ricordare che se da una parte Let's Encrypt fornisce un servizio formidabile, dall'altra supporta solo i certificati di tipo DV.
Il client di riferimento per l'uso di Let's Encrypt e del protocollo ACME è certbot.
Riferimenti
- RFC 8555: https://tools.ietf.org/html/rfc8555
- Let's Encrypt: https://letsencrypt.org
- Certbot, il client ACME raccomandato: https://certbot.eff.org
Installazione di certbot¶
Per l'installazione di certbot è caldamente consigliato seguire sempre le istruzioni ufficiali disponibili su https://certbot.eff.org. Qualora nel menù a tendina "system" non sia presente il S.O. in uso consigliamo di eseguire l'installazione via pip. Riportiamo qui le istruzioni per l'installazione di certbot via pip, per maggiori informazioni vi consigliamo di consultare le istruzioni ufficiali e più recenti su https://certbot.eff.org.
- SSH into the server
Tutti i comandi che seguono devono essere eseguiti da root o con sudo. Accedere con ssh al server in cui gira il server HTTP oppure nel sistema in cui si vuole generare il certificato.
- Install system dependencies
Le dipendenze di sistema includono generalmente Python 3.6+, il modulo venv e il plug-in Augeas per Apache.
In caso di problemi nell'installazione dei moduli di crittografia potrebbe essere necessario installare dipendenze addizionali. Per maggiori informazioni vedere cryptography project's site.
I comandi per installare le dipendenze sulla macchina sono i seguenti:
Per distribuzioni APT-based(e.g. Debian, Ubuntu ...):
sudo apt update
sudo apt install python3 python3-venv libaugeas0
Per distribuzioni RPM-based (e.g. Fedora, CentOS ...):
sudo dnf install python3 augeas-libs
- Remove certbot-auto and any Certbot OS packages
Se sono presenti pacchetti Certbot installati utilizzando un gestore di
pacchetti del sistema operativo come apt, dnf o yum, è necessario
rimuoverli prima di installare lo snap Certbot per garantire che quando
si esegue il comando certbot venga utilizzato lo snap anziché
l'installazione dal pacchetto del sistema operativo manager. Il comando
esatto per eseguire questa operazione dipende dal sistema operativo, ma
sono esempi comuni sudo apt-get remove certbot
,
sudo dnf remove certbot
, o sudo yum remove certbot
.
- Set up a Python virtual environment
Eseguire le seguenti istruzioni sulla riga di comando sulla macchina per configurare un ambiente virtuale.
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
- Install Certbot
Eseguire questo comando sulla riga di comando sulla macchina per installare Certbot.
sudo /opt/certbot/bin/pip install certbot certbot-apache
- Prepare the Certbot command
Eseguire le seguenti istruzioni sulla riga di comando sulla macchina per garantire che il comando certbot possa essere eseguito.
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
- Set up automatic renewal
Eseguire la riga seguente, che aggiungerà un processo cron al crontab predefinito.
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
- [Monthly] Upgrade certbot
È importante fare l'upgrade periodico di Certbot per mantenerlo aggiornato. Per fare ciò, eseguire il comando seguente sulla riga di comando della macchina.
sudo /opt/certbot/bin/pip install --upgrade certbot certbot-apache
Se questo passaggio genera errori, eseguire sudo rm -rf /opt/certbot
e
ripetere tutte le istruzioni di installazione dall'inizio.
(Let's encrypt) emissione, rinnovo automatico e revoca dei certificati¶
Tutti i comandi devono essere eseguiti da root o con sudo accedendo con ssh al server in cui gira il server HTTP.
Per l'installazione di certbot e la richiesta di certificati con Let's encrypt è caldamente consigliato seguire sempre le istruzioni ufficiali disponibili su https://certbot.eff.org. Qualora nel menù a tendina "system" non sia presente il S.O. in uso consigliamo di eseguire l'installazione via pip. Per maggiori informazioni vi consigliamo di consultare le istruzioni ufficiali e più recenti su https://certbot.eff.org.
Esempio di link per la combinazione "Apache" + "pip": https://certbot.eff.org/instructions?ws=apache&os=pip
IMPORTANTE: seguire esattamente tutti i passi indicati dalla guida di certbot.
Ogni istanza del client certbot permette la registrazione di un solo account per Certification Authority ma anche la registrazione di un secondo account se proveniente da una Certification Authority diversa.
Quali account sono registrati in un'istanza di certbot¶
Tramite i seguenti comandi si può scoprire se un'instanza di certbot ha già degli account associati:
certbot show_account
(Let’s encrypt)
Il web server deve essere raggiungibile¶
Prima di poter richiedere un certificato con Let's encrypt assicurarsi che il fqdn del server sia raggiungibile via web.
In caso negativo non sarà possibile procedere con la richiesta di certificato usando le istruzioni seguenti. Fare riferimento alla documentazione di certbot per tutte le altre casistiche.
Richiedere e installare in automatico un certificato¶
Lanciare il seguente comando per richiedere un certificato ed installarlo su Apache:
sudo certbot --apache
o su Nginx:
sudo certbot --nginx
Richiedere un certificato senza installazione automatica¶
Per richiedere un certificato in maniera più conservativa senza installazione su Apache:
sudo certbot certonly --apache
o per Nginx
sudo certbot certonly --nginx
Installare manualmente il certificato tramite i file di configurazione del server web.
Consultare la lista dei certificati gestiti dal client certbot¶
Lanciare il comando:
certbot certificates
oppure consultare il contenuto delle cartelle
/etc/letsencrypt/{live,archive}
Revocare un certificato¶
Con certbot esistono due modalità per revocare un certificato: tramite
opzione cert-name
e indicando direttamente il percorso del file.
certbot revoke --cert-name example.com
certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
Completata la revoca certbot chiederà se si desidera cancellare i certificati appena revocati. Se i certificati revocati non sono stati cancellati certbot proverà a rinnovarli durante il prossimo rinnovo automatico.
Consultazione certificati¶
Per consultare la situazione dei certificati emessi accedere al sito:
seguendo le istruzioni di ricerca fornite dal sito stesso.