La necessità di rendere il web più sicuro, rendendo transazioni e dati personali difficili da intercettare da parte di malintenzionati, ha spinto Google e altri colossi del a richiedere a tutti i gestori di siti web affinché passino al protocollo HTTPS. Questa è l’evoluzione più sicura del protocollo HTTP, ossia il protocollo di trasmissione standard su Internet, a sua volta basato sul protocollo di trasferimento TCP/IP per i dati. Si tratta in sostanza del linguaggio utilizzato dal tuo computer e dal server per parlare tra loro.

L’HTTP è stato un protocollo solido ma con il tempo è diventato un obsoleto, soprattutto dal punto di vista della sicurezza, in quanto tentativi di sottrazione di dati personali e finanziari sono all’ordine del giorno. Per eliminare questo grave problema sono stati inventati dei protocolli di crittografia dei dati, prima l’SSL (Secure Socket Layer) e poi il TLS (Transport Layer Security).

L’HTTPS utilizza quest’ultimo per stabilire una connessione criptata mediante crittografia tra client e server. Per implementare l’HTTPS sul proprio sito web o il proprio server è necessario ordinare e installare un Certificato SSL, forniti da diverse autorità certificative. Con questo articolo ci soffermiamo su Let’s Encrypt.

Cos’è Let’s Encrypt

Let’s Encrypt è una certification authority (CA) con la quale è possibile creare, validare, rinnovare i certificati per il protocollo TLS. Let’s Encrypt è stata introdotta nel 2016 ed è stata una iniziativa voluta dalla Mozilla Foundation e adesso sponsorizzata da nomi del calibro di Cisco, Akamai, EFF (Electronic Frontier Foundation), Google, Facebook, Internet Society e molti altri; ad oggi le statistiche pubblicate parlano di oltre 120 milioni i certificati emessi.

Questa CA fonda il suo funzionamento sul protocollo ACME (Automated Certificate Management Environment) il quale è un protocollo di comunicazione pensato per automatizzare le interazioni tra le varie CA e i Web server. ACME si occupa di automatizzare il processo di rilascio delle Public Key Infrastructure, ovvero quell’insieme di tecnologie che consentono a terze parti fidate di verificare e/o farsi garanti dell’identità di un utente.

Non da ultimo, Let’s Encrypt permette l’emissione dei certificati gratuita: questo le ha permesso di diventare in poco tempo una realtà consolidata nell’emissione dei certificati.

Compatibilità di Let’s Encrypt

È necessario che il certificato IdenTrust’s DST Root X3 sia incluso nello store dei certificati attendibili e che siano supportati i certificati SHA2; ad oggi i certificati Let’s Encrypt sono supportati da:

  • Mozilla Firefox v2.0 e successivi,
  • Google Chrome,
  • Internet Explorer su Windows XP SP3 e superiore,
  • Microsoft Edge, Android OS v2.3.6 e successivi,
  • Safari per macOS v4.0 e successivi,
  • Safari per iOS v3.1 e successivi,
  • Debian Linux v6 e successivi,
  • Ubuntu Linux v12.04 e successivi,
  • NSS Library v3.11.9 e successivi,
  • Amazon FireOS (Silk Browser),
  • Cyanogen con versione superiore a 10,
  • Jolla Sailfish (una distro linux per sistemi mobili) con versione superiore a 1.1.2.16,
  • Kindle con versione superiore a 3.4.1,
  • Java 7 con versione 7u111 e successivi,
  • Java 8 con versione 8u101 e successivi.

Installazione di un certificato Let’s Encrypt usando Powershell

Proviamo ad installare un certificato fornito da Let’s Encrypt, gratuitamente. Innanzitutto, per portare a termine la procedura, abbiamo bisogno di Windows PowerShell 5.1, del .NET Framework 4.7.2 e della possibilità di aggiungere il CNAME nel DNS. Avviamo Powershell con i privilegi amministrativi, quindi verifichiamo che le ExecutionPolicy di PowerShell consentano l’esecuzione di script almeno RemoteSigned: in caso negativo, eseguiamo il comando

Set-ExecutionPolicy RemoteSigned

Set-ExecutionPolicy RemoteSigned

Poi installiamo i moduli di Powershell relativi al protocollo ACME (accettiamo gli avvisi su eventuali repository non attendibili)

Install-Module -Name Posh-ACME

Install-Module -Name Posh-ACME

New-PACertificate *.xxx.com -AcceptTOS -Contact info@xxx.com -DnsPlugin AcmeDns -PluginArgs @{ACMEServer=’auth.acme-dns.io’} -Install

Sostituiamo xxx con il nome del dominio che vogliamo nel certificato e sostituiamo info@xxx.com con la mail che verrà utilizzata al momento della scadenza del certificato.

Una volta dato il comando, il sistema chiederà di premere Invio per continuare. NON FARLO IMMEDIATAMENTE; inserire il record CNAME (mostrato nell’output del comando appena eseguito) nel pannello di controllo del provider dns del nostro sito.

record CNAME

Torniamo nella finestra di PowerShell e adesso possiamo premere Invio per continuare. Lo script attenderà due minuti affinché la propagazione del DNS sia completata.

certificato

Alla fine, si dovrebbe ottenere il certificato.

Per visualizzare ulteriori informazioni sul certificato, è possibile utilizzare il seguente comando:

Get-PACertificate | Format-List

Get-PACertificate | Format-List

È possibile vedere le informazioni basilari riguardo il certificato e tutti i file relativi; essi sono archiviati nella cartella % LOCALAPPDATA% \\ Posh-ACME in cui è presente il file PFX (nel caso si desideri installare il certificato su un’altra macchina). La password PFX predefinita è ‘poshacme’. Eventualmente, è possibile specificarne una diversa con l’opzione -PfxPass durante l’esecuzione del comando New-PACertificate.

Eseguendo certlm.msc sul pc, otterremo la lista dei certificati installati sul pc

certificati_pc

È possibile rinnovare manualmente il certificato eseguendo il seguente comando:

Submit-Renewal

Ultima considerazione: la presenza dell’HTTPS viene inserito tra i diversi fattori di ranking da parte di google, quindi oltre per motivi di sicurezza è importante per far apparire il nostro sito più in alto nelle ricerche degli utenti. Per rendere il tuo sito sicuro, implementando l’https, affidati a Nexsys, azienda specializzata creazione e gestione di siti web. Nexsys saprà consigliarti al meglio sulle soluzioni da adottare per ottimizzare il tuo sito web, rendendolo sicuro, moderno e facilmente navigabile.