Vai al contenuto

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

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:

https://crt.sh/

seguendo le istruzioni di ricerca fornite dal sito stesso.