Un’introduzione a Let’s Encrypt

Introduzione

Let’s Encrypt è un’autorità di certificazione aperta e automatizzata che utilizza il protocollo ACME (Ambiente di Gestione Automatica dei Certificati) per fornire certificati TLS/SSL gratuiti a qualsiasi client compatibile. Questi certificati possono essere utilizzati per crittografare la comunicazione tra il tuo server web e i tuoi utenti. Esistono dozzine di client disponibili, scritti in vari linguaggi di programmazione, e molte integrazioni con strumenti amministrativi popolari, servizi e server.

Il client ACME più popolare, Certbot, è ora sviluppato dalla Electronic Frontier Foundation. Oltre a verificare la proprietà del dominio e recuperare i certificati, Certbot può configurare automaticamente TLS/SSL sia su server web Apache che Nginx.

In questa guida verranno discusse brevemente le autorità di certificazione e il funzionamento di Let’s Encrypt, per poi esaminare alcuni client ACME popolari.

Cos’è un’autorità di certificazione?

Le autorità di certificazione (CA) sono entità che firmano crittograficamente i certificati TLS/SSL per garantirne l’autenticità. Browser e sistemi operativi dispongono di un elenco di CA attendibili che utilizzano per verificare i certificati dei siti web.

Fino a poco tempo fa, la maggior parte delle CA erano operazioni commerciali che richiedevano denaro per i loro servizi di verifica e firma. Let’s Encrypt ha reso questo processo gratuito per gli utenti automatizzando completamente la procedura e affidandosi a sponsorizzazioni e donazioni per finanziare l’infrastruttura necessaria.

Per ulteriori informazioni sui certificati e sui diversi tipi di autorità di certificazione, puoi leggere “Un confronto tra Let’s Encrypt, Autorità di Certificazione Commerciali e Private, e Certificati SSL Autenticati da Auto-Signature”.

Successivamente, vedremo come Let’s Encrypt effettua la verifica automatica del dominio.

Come funziona Let’s Encrypt

Il protocollo ACME di Let’s Encrypt definisce come i client comunicano con i suoi server per richiedere certificati, verificare la proprietà del dominio e scaricare i certificati. Attualmente è in fase di diventare uno standard ufficiale dell’ IETF.

Let’s Encrypt offre certificati validati dal dominio, il che significa che devono verificare che la richiesta del certificato provenga effettivamente da una persona che controlla il dominio. Fanno ciò inviando al client un token univoco, e quindi effettuando una richiesta web o DNS per recuperare una chiave derivata da quel token.

Ad esempio, con la sfida basata su HTTP, il client calcolerà una chiave dal token univoco e un token dell’account, quindi metterà i risultati in un file da servire dal server web. I server Let’s Encrypt quindi recuperano il file su http://esempio.com/.well-known/acme-challenge/token. Se la chiave è corretta, il client ha dimostrato di poter controllare le risorse su esempio.com, e il server firmerà e restituirà un certificato.

Il protocollo ACME definisce diverse sfide che il tuo client può utilizzare per dimostrare la proprietà del dominio. La sfida HTTPS è simile a HTTP, tranne che invece di un file di testo, il client provvederà a un certificato autofirmato con la chiave inclusa. La sfida DNS cerca la chiave in un record DNS TXT.

Il Client Certbot di Let’s Encrypt

Certbot è di gran lunga il client Let’s Encrypt più popolare. È incluso nella maggior parte delle principali distribuzioni Linux e include comode funzionalità di configurazione automatica per Apache e Nginx. Una volta installato, ottenere un certificato e aggiornare la configurazione di Apache può essere fatto così:

  1. sudo certbot --apache -d www.example.com

Certbot farà alcune domande, eseguirà la sfida, scaricherà i certificati, aggiornerà la configurazione di Apache e ricaricherà il server. Dovresti quindi essere in grado di navigare su https://www.example.com con il tuo browser web. Comparirà un lucchetto verde che indica che il certificato è valido e la connessione è crittografata.

Dato che i certificati Let’s Encrypt sono validi solo per novanta giorni, è importante configurare un processo di rinnovo automatico. Il seguente comando rinnoverà tutti i certificati su una macchina:

  1. sudo certbot renew

Aggiungi il comando sopra a un crontab per eseguirlo ogni giorno e i certificati saranno rinnovati automaticamente trenta giorni prima della scadenza. Se un certificato è stato creato inizialmente con le opzioni --apache o --nginx, Certbot ricaricherà il server dopo un rinnovo riuscito.

Se desideri saperne di più su cron e crontab, consulta il tutorial “Come Usare Cron per Automatizzare Compiti“.

Altri Clienti

Dato che il protocollo ACME è aperto e ben documentato, sono stati sviluppati molti client alternativi. Let’s Encrypt mantiene un elenco di client ACME sul loro sito web. La maggior parte degli altri client non ha le funzionalità di configurazione automatica del server web di Certbot, ma hanno altre funzionalità che potrebbero interessarti:

  • C’è un client scritto nella maggior parte dei linguaggi di programmazione, inclusi script shell, Go e Node.js. Questo potrebbe essere importante se stai creando certificati in un ambiente vincolato e preferiresti non includere dipendenze da Python e da altri Certbot
  • . Alcuni client possono essere eseguiti senza privilegi di root. È generalmente una buona idea eseguire il minor numero possibile di codice privilegiato
  • . Molti client possono automatizzare la sfida basata sul DNS utilizzando l’API del tuo provider DNS per creare automaticamente il record TXT appropriato. La sfida DNS consente alcuni casi d’uso più complicati come la crittografia dei server web non accessibili pubblicamente
  • . Alcuni client sono effettivamente integrati nei server web, nei proxy inversi o nei bilanciatori di carico, rendendo ancora più facile configurarli e distribuirli

. Alcuni dei client più popolari sono:

  • lego: Scritto in Go, lego è un’installazione binaria di un solo file e supporta molti provider DNS quando si utilizza la sfida DNS
  • acme.sh: acme.sh è uno script shell semplice che può essere eseguito in modalità non privilegiata e interagisce anche con più di 30 provider DNS
  • Caddy: Caddy è un server web completo scritto in Go con supporto integrato per Let’s Encrypt.

. Sono disponibili molti altri client e molti altri server e servizi stanno automatizzando l’impostazione di TLS/SSL integrando il supporto di Let’s Encrypt.

Conclusione

Siamo andati attraverso le basi di come funziona Let’s Encrypt e abbiamo discusso alcuni dei software client disponibili. Se desideri istruzioni più dettagliate sull’uso di Let’s Encrypt con vari software, i seguenti tutorial sono un buon punto di partenza:

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-let-s-encrypt