Che cosa è un certificato SSL

SSL è sinonimo di una tecnologia di sicurezza standard globale che consente la comunicazione crittografata tra un browser (Chrome, Edge, Safari) e un server web; letteralmente sta a significare Secure Sockets Layer.

Il certificato SSL è una sorta di garanzia che viene rilasciata da un ente definito Certification Authority. In pratica l’autorità che emette il certificato garantisce che l’organizzazione con cui stai “parlando” attraverso il browser è realmente chi dichiara di essere.

Per creare questa connessione sicura, un certificato SSL (noto anche come “certificato digitale”) è installato su un server web e ha principalmente due funzioni:

  • autentica l’identità del sito web (questo garantisce ai visitatori che non si tratta di un sito fasullo);
  • cripta i dati che vengono trasmessi.

Quale certificato SSL scegliere

Tutti i certificati SSL sono uguali? No, ci sono diversi tipi di certificati SSL in base al numero dei nomi di dominio o dei nomi di sottodominio di proprietà. Sostanzialmente possono essere di tre tipi Single, Wildcard e Multi-Domain vediamoli insieme:

  • Single – copre un solo nome di dominio completo o il nome di sottodominio;
  • Wildcard – copre un nome di dominio e un numero illimitato di suoi sottodomini;
  • Multi-Domain – protegge più nomi di dominio.

Esistono inoltre vari livelli di convalida necessari reltivi ai certificati SSL come ad esempio:

  • Domain Validation – questo livello è il meno costoso, copre la crittografia di base e la verifica della titolarità della registrazione del nome del dominio. Questo tipo di certificazione richiede solitamente da paio di minuti a diverse ore per ottenerlo;
  • Organization Validation – con questo tipo di convalida in aggiunta alla crittografia di base e la verifica della titolarità della registrazione del nome di dominio, alcuni dettagli del proprietario (ad esempio nome e indirizzo) sono autenticati. Questo tipo di certificato di solito richiede da alcune ore a diversi giorni per ottenerlo;
  • Extended Validation (EV) – questo fornisce il più alto grado di sicurezza a causa dell’esame approfondito che viene effettuato prima che sia emesso il certificato (come strettamente specificato nelle linee guida stabilite dal consorzio di governo del settore certificazione SSL). Oltre alla proprietà della registrazione del nome di dominio e l’autenticazione entità, è verificata l’esistenza legale, materiale e funzionale del soggetto. Questo tipo di certificazione richiede solitamente da un paio di giorni a diverse settimane per ottenerlo.

Chi ha bisogno di un certificato SSL

Ha sicuramente bisogno di un certificato SSL ogni individuo, organizzazione o azienda che utilizza il proprio sito web per richiedere, ricevere, elaborare, raccogliere, immagazzinare o visualizzare informazioni riservate o sensibili. Alcuni esempi di queste informazioni sono:

  • login e password;
  • informazioni finanziarie (ad esempio, numeri di carte di credito, conti bancari);
  • dati personali (ad esempio, i nomi, gli indirizzi, i numeri di previdenza sociale, date di nascita);
  • informazioni proprietarie;
  • documenti legali e contratti;
  • liste di clienti;
  • cartelle cliniche.

Man mano sta diventando indispensabile soprattutto per quei siti web che hanno nelle proprie pagine web una form dati che richiede username e password (ad esempio per l’accesso ad un’area riservata). Infatti, il browser di Google, a partire dalla versione Chrome 56, visualizza un messaggio di avviso per l’utente di accesso non sicuro nel caso in cui il sito non sia protetto da un certificato SSL e quindi non sia raggiungibile mediante protocollo https.

Segnalazione da un browser di un certificato SSL non valido

Come creare un certificato SSL

Probabilmente la parte più importante di un certificato SSL è da dove proviene. I certificati SSL sono emessi da autorità di certificazione (CA o Certification Autohrity), ovvero organizzazioni che si assicurano di verificare l’identità e la legittimità di qualsiasi soggetto che richiede un certificato.

Il ruolo della CA è quella di accettare le domande di certificato, autenticare le applicazioni, i certificati di emissione e mantenere le informazioni di stato aggiornate sui certificati rilasciati.

Come posso capire se un sito ha un certificato SSL

Sostanzialmente ci sono quattro indizi visivi:

  1. un lucchetto a fianco dell’ URL;
  2. il prefisso URL https invece di http;
  3. un sigillo di fiducia;
  4. una barra degli indirizzi verde (quando un certificato EV SSL è emesso).

Ecco un esempio dal sito di Google:

Come installare un certificato SSL

Lo scopo di questo paragrafo non è quello di indicare esattamente come installare un certificato SSL nel tuo server ma di fornire a grandi linee una procedura su un server Linux con Apache.

Se dovessi avere qualche dubbio o soprattutto difficoltà a installare il certificato sul server, ti consigliamo di chiedere assistenza tecnica ad un sistemista oppure di contattare direttamente HostingVirtuale per richiedere una consulenza di questo tipo.

Fase 1: Ottenere e installare il certificato SSL

Dopo aver ottenuto il certificato dal tuo fornitore, scarica e copia i due certificati (server e intermediate) direttamente sul server, ad esempio in una directory come /usr/local/ssl/crt/;

Fase 2: Configurare Apache

Alcune configurazioni di Apache contengono sia il file httpd.conf e sia il file ssl.conf. Attenzione ad aggiornare con le direttive indicate di seguito, uno solo di questi file per evitare che ci sia un conflitto e Apache non si avvii.

Apri il file di configurazione in un editor di testo come Vim o Blocco note e nella sezione Virtual Host del file httpd.conf o ssl.conf, aggiungi le seguenti direttive:

File di configurazione di Apache

Mentre il VirtualHost dovrebbe essere come segue

<VirtualHost IP_SERVER:443>  
ServerAdmin email-amministratore
DocumentRoot /percorso/document-root  
ServerName nome-sito  
ErrorLog /percorso/error-log  
SSLEngine on  <br>SSLProtocol all  
SSLCertificateFile /percorso/server-certificate  SSLCertificateKeyFile /percorso/private-key  SSLCertificateChainFile /percorso/intermediate-certificate  ServerPath /percorso  
<Directory "/percorso"></Directory>
</VirtualHost>

Fase 3: test e verifiche

Ovviamente si può provare subito a visualizzare il sito web digitando prima il protocollo HTTPS e verificare che sia visibile. Se invece vuoi utilizzare un sistema di terze parti per verificare che il certificato sia installato correttamente, puoi utilizzare il tool di GeoTrust.

Ringrazio Hosting Virtuale, a cui vi rimando per ulteriori approfondimenti, per la parte teorica che mi ha permesso di inquadrare tutto il tema che ad un tratto mi sembrava così nebuloso da essere in una città Cyberpunk come l’immagine di Copertina presa da Deviantart.

Photo by Robert Anasch on Unsplash

Purtroppo come i miei colleghi sanno bene se la teoria corrispondesse alla pratica probabilmente otterrei il certificato della foto Photo by Robert Anasch on Unsplash. Visto che mi trovavo su un server governato da DirectAdmin è meglio che vi dico i passi che ho fatto per rendere reale quanto descritto. A proposito per ragioni di costo volevamo installare dei certificati ssl free di Let’s Encrypt.

Come primo passaggio DirectAdmin deve avere abilitato la creazione dei certificati Let’s Encrypt il che vuol dire che il suo file di configurazione directadmin.conf, qui trovate come aggiornarlo, deve contenere la direttiva letsencrypt=1.

Prima di partire andate nella videata della gestione SSL del sito che dovrà andare in https, abilitate l’SSL e seguite le istruzioni per connettere tramite un link simbolico le cartelle generate per il sito https con quelle del sito http evitando così che quando si usa l’https venga usato un sito vuoto visto che i dati sono in quello http.

Impostare il link simbolico per evitare che DirectAdmin usi cartelle specifiche per il sito in l’https

Le istruzioni corrette per fare creare un certificato Let’s Encrypt a DirectAdmin sono quelle specificate per la creazione di un certificato mono dominio del 6/7/2020 Installing an SSL certificate for your hostname using LetsEncrypt . I comandi sono tre. I primi due potete farli in sequenza mentre il terzo, il restart del servizio di DirectAdmin, va fatto dopo avere connesso il certificato al sito vero e proprio, passaggio documentato in un’immagine successiva.

Installing an SSL certificate for your hostname using LetsEncrypt

Mentre non abbiamo capito molto per il Wildcard domain abbiamo verificato che i certificati per il nostro WordPress Multisite possono essere assimilati a dei certificati Multi Domain e quindi devono essere generati con la sequenza del certificato singolo, che abbiamo appena descritto, sostituendo il primo comando con quello utilizzato nelle istruzioni, ormai obsolete, fornite per ottenere un certificato MultiDomain .

Direct Admin Multi Domain Certificate

In accordo con quanto detto per ottenere il primo certificato abbiamo seguito le istruzioni per la request_single sostituendo il primo comando con questo.

./letsencrypt.sh request perlaterra.net,iafue.perlaterra.net.sovranitalimentare.it,voci.perlaterra.net 4096

Credendo che dovesse essere necessario avere un certificato di tipo Wildcard Domain per avere l’SSL su WordPress Multisite abbiamo iniziato a seguire le istruzioni per un Wildcard domain mettendo dentro directadmin.conf il parametro dns_ttl=1. L’abbiamo lasciato ma non sappiamo se per quanto abbiamo appena detto e fatto sia utile o meno.

Per connettere il certificato appena creato con il WordPress Multisite bisogna andare sul pannello DirectAdmin del sito alla voce configurazione SSL e mettetevi nella condizione analoga a quanto illustrato dalla figura seguente per scegliere di utilizzare il certificato presente sul server creato dalla fase precedente. Dovete chiaramente includere tutti i siti che avete incluso nel certificato.

Per indicare di Utilizzare il certificato condiviso dal server

Importante è salvare quanto fatto e fare poi il restart del server DirectAdmin come specificato nella fase di creazione del certificato. Se per qualche evenienza volete guardare dietro le quinte qui trovate dove fisicamente sono presenti sul server i certificati.

SSL Certificate Locations
Log dei comandi eseguiti da me