{"copy":"Copia","expand":"Aprire","collapse":"Chiudere","copy_success":"Copiato!","copy_error":"Copia non riuscita!"}

Acquisizione del certificato TLS tramite il protocollo ACME su Linux

Le seguenti istruzioni ti aiuteranno a conseguire l'emissione automatica e la successiva installazione automatica dei certificati sul tuo server Linux utilizzando Certbot, strumento di gestione e rimozione automatica dei certificati. Le istruzioni sono state redatte per il server web Apache ma Certbot può essere utilizzato anche per Nginx, Haproxy e Plesk. Si tratta di un software open source, quindi liberamente disponibile.

Preparazione per ottenere il certificato

L'utilizzo di ACME è molto semplice, ma richiede una piccola preparazione. Prima di iniziare a utilizzarlo, leggi i seguenti paragrafi.

Ottenere le credenziali per l'autenticazione

L'implementazione ACME di DigiCert utilizza l'autenticazione tramite external account binding (EAB), il che significa che riceverai le tue credenziali uniche da DigiCert. Queste credenziali (ACME credentials) possono essere facilmente ottenute nel tuo account cliente SSLmarket.

Le ACME credentials sono composte da un Key Identifier (ID della chiave) e un HMAC key, che rappresenta il tuo segreto per l'autenticazione al tuo account esistente. Questi dettagli e l'URL del endpoint ACME sono necessari per il client ACME (Certbot).

Attenzione: Per ogni combinazione di certificato, validità e organizzazione, viene generato un set unico di KID e chiave HMAC. È tua responsabilità conservarli in modo sicuro.

Riepilogo della verifica dei certificati

Tutti i certificati emessi da DigiCert sono verificati. Alcuni minimamente (certificati DV), altri richiedono la verifica dell'organizzazione (OV e EV). Anche ACME non fa eccezione, e questa verifica viene utilizzata.

  • I certificati DV di dominio vengono rilasciati immediatamente; è sufficiente creare le ACME credentials per un prodotto DV e utilizzarle. La verifica DCV avviene tramite il metodo HTTP-01 e il certificato verrà emesso subito.
  • I certificati OV ed EV richiedono un'organizzazione verificata e la verifica del dominio utilizzato associato all'organizzazione. Se la verifica non è completata, la richiesta ACME non può essere portata a termine.
    • I domini possono essere verificati automaticamente tramite HTTP-01, oppure possono essere verificati in anticipo tramite DNS o e-mail (in tal caso, ti invitiamo a contattarci). La procedura DCV è esattamente come al solito.
    • L'organizzazione deve essere verificata prima di richiedere il certificato, altrimenti la richiesta sarà in attesa del suo completamento (si verificherà un timeout). Raccomandiamo di attendere la verifica della tua organizzazione da parte di DigiCert dopo aver abilitato l'account ACME e di consultare lo stato con il supporto di SSLmarket.

Puoi iniziare a utilizzare ACME per OV ed EV una volta che l'organizzazione è verificata (la verifica dei domini e delle aziende è valida per 13 mesi).

Certbot

Certbot è il client ACME più popolare, supportato dai principali server web Linux.

Preparazione di Certbot sul server

Il pacchetto Certbot è comunemente installato nelle distribuzioni Linux, ma si consiglia di rimuovere questo pacchetto predefinito. Per utilizzare l'EAB ACME di DigiCert, è necessario utilizzare il pacchetto Snap; altre varianti potrebbero non funzionare. Installalo in questo modo:

snap install certbot --classic

Certbot supporta una varietà di webserver. Specificare il tipo utilizzato con un parametro, ad esempio --apache o --nginx. Se hai bisogno di altro, consiglio la sua documentazione chiara, che ti fornirà istruzioni specifiche per il webserver in questione.

Ottenere e installare il certificato

Su Internet o nella documentazione di Certbot troverai molti esempi su come usarlo e ottenere un certificato. Tuttavia, poiché ACME di DigiCert funziona in modalità EAB, è necessario completare il comando con l'URL ACME e le due credenziali ACME ottenute nella tua amministrazione. Altrimenti, non funzionerà.

Richiedi un certificato nel terminale utilizzando il seguente comando:
sudo certbot --apache --register-unsafely-without-email --server URL --eab-kid xxxxxx --eab-hmac-key yyyyyy -d www.nomeiltuodominio.it


Legend per il comando:

  • Certbot – avvia il programma Certbot.
  • --apache – seleziona il plugin Apache di Certbot per installare il certificato. Se c'è un altro webserver, utilizza un altro parametro (es. --nginx).
  • --register-unsafely-without-email – salta la registrazione dell'email per le notifiche, che non è necessaria.
  • --server – determina quale server ACME soddisferà la tua richiesta, ossia https://acme.digicert.com/v2/acme/directory.
  • - d – Nome completo del dominio per il quale si desidera emettere il certificato. Nel parametro -d puoi utilizzare più nomi di dominio (SAN), se supportato dal certificato. Questi saranno addebitati, a meno che non siano alias gratuiti (www). Se non compili questa opzione, Certbot ti chiederà di confermare i domini che desideri includere nella tua richiesta in base ai vhost configurati sul server.

Dopo aver inserito il comando, verrà proposto di attivare immediatamente il reindirizzamento forzato a https sul dominio: Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Scegli la tua opzione e premi INVIO. La configurazione scelta sarà impostata e verrà caricata al riavvio del server web. Riceverai quindi un messaggio finale che informa che il processo è stato completato con successo e dove sono memorizzati i tuoi certificati.

Certbot installerà anche il certificato intermedio necessario, per controllare la corretta installazione utilizza il nostro strumento online per il controllo dell'installazione del certificato.

ACME.sh

L'ACME di DigiCert può essere facilmente utilizzato anche con lo strumento ACME.sh. A differenza di certbot, ACME.sh è "più leggero" e non richiede l'installazione di tante dipendenze sul server.

Crea un utente di sistema separato, sotto cui "funzionerà":useradd -r -s /bin/bash -m -d /home/acmeuser acmeuser mkdir -p /home/acmeuser/.acme.sh chown -R acmeuser:acmeuser /home/acmeuser/.acme.sh echo 'acmeuser ALL=(ALL) NOPASSWD: /usr/sbin/service nginx reload' | sudo tee /etc/sudoers.d/acmeuser

poi accedi come utente: sudo su - acmeuser

Installazione di acme.sh

Ora installa il client ACME con il pacchetto scaricato dal web. wget https://get.acme.sh -O acme.sh
sh acme.sh
L'installazione esegue:

  • l'installazione dello script stesso
  • la configurazione di un cron job (può essere verificato sotto l'utente acmeuser con il comando crontab -e)

Infine, registra l'autorità di certificazione: acme.sh --register-account --server https://one.digicert.com/mpki/api/v1/acme/v2/directory --eab-kid xxxxxx --eab-hmac-key yyyyyy

Prima di richiedere il certificato è necessario verificare (e eventualmente configurare) che l'acmeuser abbia accesso alla directory di destinazione dove sono posizionati i certificati per nginx, apache o altri servizi sul server. Ho avuto la cartella accessibile solo all'utente root: l'ho risolta creando un nuovo gruppo ssladmins e aggiungendo gli utenti root e acmeuser.

sudo groupadd ssladmins
sudo usermod -aG ssladmins root
sudo usermod -aG ssladmins acmeuser
sudo chown root:ssladmins /etc/nginx/ssl/
sudo chmod 770 /etc/nginx/ssl/

Un'altra soluzione sarebbe: utilizzare visudo per consentire all'acmeuser di copiare i file nelle directory specificate senza una password.

Richiesta di emissione del certificato

acme.sh --issue --server https://one.digicert.com/mpki/api/v1/acme/v2/directory -d dev.inmail.cz --days 365 -w /www/sites/inmail/dev/current/web/ --key-file /etc/nginx/ssl/dev.inmail.cz.key --fullchain-file /etc/nginx/ssl/dev.inmail.cz.cer --force --log --reloadcmd "sudo systemctl reload nginx" Elenco dei certificati emessi e installati: acme.sh --list

Ti è stato utile questo articolo?