WordPress HTTPS, SSL e TLS: una guida per gli amministratori di siti Web

Pubblicato: 2021-02-01

Quando visiti un sito Web, il tuo browser (noto anche come client ) invia una richiesta HTTP a un server web. Una volta che il server web ha inviato una risposta HTTP , il browser può quindi visualizzare la pagina sullo schermo. Tuttavia, il traffico HTTP ha un problema; è un protocollo in chiaro. Questo lo rende suscettibile a ficcanasare e intromettersi.

Se un utente malintenzionato si trova sulla tua stessa rete, può intercettare e leggere il tuo traffico HTTP. Possono anche modificare sia le tue richieste al server, sia le risposte del server a te. Questo è noto come attacco Man-in-the-Middle (MitM). Questo può accadere facilmente sui Wi-Fi pubblici, come quelli nelle hall degli hotel e negli spazi pubblici.

Ecco perché un sito Web dovrebbe essere su HTTPS, quindi il traffico non può essere intercettato. Questo articolo spiega cosa sono HTTPS, SSL e TLS. Spiega anche come configurare il tuo sito Web WordPress per funzionare su HTTPS.

Sommario

  • Che cos'è SSL e TLS?
  • Cos'è HTTPS?
    • Come funziona HTTPS?
      • La stretta di mano di TLS
      • Le chiavi pubbliche e private (la coppia di chiavi)
  • Ho davvero bisogno di HTTPS sul mio sito Web WordPress?
    • Ottenere un certificato HTTPS TLS (noto anche come certificato SSL)
    • HTTPS su hosting WordPress condiviso e gestito
  • Configurazione di WordPress HTTPS
    • Configurazione del server web
    • Configurazione dell'URL di WordPress su HTTPS
    • Applicazione di TLS sulla dashboard di WordPress (suggerimenti bonus)
  • Aggiunta di HTTP Strict Transport Security (HSTS)
    • Configurazione HSTS sul server web
    • Cifre TLS
    • Il mio WordPress funziona su HTTPS, è sicuro?

Che cos'è SSL e TLS?

Una volta che Internet ha iniziato a crescere, è diventato ovvio che avevamo bisogno di un meccanismo per trasferire in modo sicuro le informazioni tra un client e un server senza che nessuno fosse in grado di intercettare o modificare il traffico: inserire SSL o Secure Socket Layer. SSL è un protocollo di sicurezza Internet, sviluppato per la prima volta da Netscape nel 1995 per risolvere questo problema.

Più specificamente, SSL si è prefissato di realizzare quanto segue:

  • Crittografia : per crittografare il traffico in modo che non possa essere intercettato da terze parti non autorizzate tramite intercettazioni,
  • Autenticazione : per assicurarsi che il server con cui sta parlando il client sia effettivamente il server che dicono di essere,
  • Integrità — per garantire che i dati inviati tra il client e il server non vengano modificati da qualcun altro lungo il percorso.

Tuttavia, nel tempo i ricercatori sulla sicurezza hanno identificato una serie di problemi di sicurezza in SSL. Pertanto SSL è stato sostituito da TLS (Transport Layer Security protocol). Sebbene le differenze nascoste tra SSL e TLS siano drastiche, lo scopo di TLS rimane sostanzialmente lo stesso.

NOTA: potresti vedere spesso SSL utilizzato per fare riferimento a TLS. SSL è un protocollo legacy e non è più sicuro da usare. Tuttavia, a causa della sua popolarità, molti usano ancora SSL come acronimo, ma significano TLS .

Cos'è HTTPS?

HTTPS, o Hypertext Transfer Protocol Secure, è una versione sicura del protocollo HTTP. HTTPS si basa su Transport Layer Security (TLS), un protocollo migliorato e più sicuro rispetto a quello precedentemente utilizzato, Secure Socket Layer (SSL). TLS fornisce crittografia, autenticazione e integrità alle richieste e risposte HTTPS.

Puoi pensare a HTTPS come a richieste e risposte HTTP (che è la versione in chiaro del protocollo) che passano attraverso un tunnel TLS. Il termine tecnico per questo è incapsulamento . È pertinente notare che TLS può essere utilizzato per incapsulare altri protocolli, non solo HTTP.

Puoi individuare i siti Web che utilizzano HTTPS osservando l'inizio dell'URL (che inizia con HTTPS) nella barra di navigazione del browser o tramite il lucchetto verde. Se stai navigando in un sito Web su HTTP, i browser lo contrassegnano come Non sicuro .

Siti Web HTTP contrassegnati come non sicuri

Come funziona HTTPS?

Quando richiedi una pagina web utilizzando HTTPS, il tuo browser e il server web avviano un processo chiamato TLS handshake . L'handshake TLS consente al client e al server di decidere se e come comunicare. Nel corso dell'handshake TLS, il client e il server effettuano le seguenti operazioni:

  • decidere la versione del protocollo TLS da utilizzare (TLS 1.0, 1.2, 1.3…),
  • concordare quali suite di crittografia (un insieme di algoritmi di crittografia utilizzati per stabilire comunicazioni sicure) utilizzare,
  • autenticare l'identità del server,
  • generare chiavi di crittografia da utilizzare al termine dell'handshake per comunicare in modo sicuro.

La stretta di mano di TLS

Durante l'handshake TLS, il server invia al client il certificato in modo che il client possa verificare di poter autenticare il server. Un certificato è simile a un passaporto: viene emesso da un'autorità centrale fidata chiamata Certificate Authority (CA) che stabilisce in modo indipendente l'identità del sito Web che può essere dimostrata al tuo browser.

Le chiavi pubbliche e private (la coppia di chiavi)

Il certificato TLS (spesso indicato come certificato SSL) che il server Web invia al client contiene la chiave pubblica . La chiave pubblica è una delle due chiavi speciali chiamate keypair . Una coppia di chiavi è composta da due chiavi; la chiave pubblica e la chiave privata . Mentre la chiave pubblica è condivisa con i client, la chiave privata viene mantenuta segreta sul server e non viene mai divulgata. La coppia di chiavi è forgiata insieme.

La coppia di chiavi pubblica e privata ha una relazione particolarmente interessante: senza conoscere la chiave privata del server (questa è segreta e solo il server dovrebbe conoscerla), un client può crittografare i dati utilizzando la chiave pubblica del server che il server può decifrare utilizzando la sua chiave privata .

Se questo ti confonde, pensa a questo come se il "server" avesse inviato al tuo "browser" una valigia aperta (chiave pubblica) protetta da un lucchetto: una volta che hai messo qualcosa nella valigia e bloccato il lucchetto, solo il "server" con il chiave del lucchetto (chiave privata) può vedere cosa c'è dentro.

Ho davvero bisogno di HTTPS sul mio sito Web WordPress?

Sì. Indipendentemente dal tipo di traffico che sta servendo il tuo sito web (che si tratti di informazioni di identificazione personale (PII), dati del titolare della carta o foto di gatti), non c'è assolutamente alcun motivo per cui non dovresti servire il tuo sito web tramite HTTPS.

Prima di tutto, quando esegui il tuo sito Web su HTTP, gli hacker possono facilmente rubare le password e le credenziali di WordPress e hackerare il tuo sito Web. Possono fare tutto questo utilizzando strumenti disponibili gratuitamente.

A parte i vantaggi in termini di sicurezza e una migliore esperienza utente, il nuovo protocollo HTTP/2, che offre numerosi vantaggi in termini di prestazioni, non può essere utilizzato senza TLS all'interno dei browser Web. Inoltre, HTTPS ha anche vantaggi per l'ottimizzazione per i motori di ricerca (SEO) e fa parte dell'algoritmo di ranking di ricerca di Google.

Ottenere un certificato HTTPS TLS (noto anche come certificato SSL)

Per configurare HTTPS avrai bisogno di un certificato TLS se stai impostando tutto da solo. Mentre vedrai dozzine di offerte di certificati TLS a pagamento, puoi ottenere un certificato TLS gratuito da un'autorità di certificazione senza scopo di lucro chiamata Let's Encrypt. Non c'è assolutamente nulla di diverso tra un certificato che ricevi da Let's Encrypt gratuitamente e uno per cui paghi.

HTTPS su hosting WordPress condiviso e gestito

Tieni presente che per le soluzioni di hosting gestito o condiviso, il tuo provider di hosting può addebitare o meno l'aggiunta di HTTPS: in tal caso, prima di sborsare denaro per un certificato, chiedi all'assistenza clienti se puoi utilizzare un certificato Let's Encrypt con il loro servizio invece. Anche i forum della community Let's Encrypt sono un'ottima risorsa che potrebbe aiutarti.

Configurazione di WordPress HTTPS (applicando TLS sul tuo sito WordPress)

Esistono alcuni modi per applicare il TLS sul tuo sito Web WordPress a seconda della configurazione. Nella maggior parte dei casi, configurare il server Web per reindirizzare tutto il traffico HTTP su HTTPS (fare riferimento al generatore di configurazione SSL di Mozilla.

Devi anche configurare WordPress per l'ascolto su HTTPS. Puoi farlo con plugin come Really Simple SSL o WP force SSL. In questo esempio, vedremo come farlo senza utilizzare plug-in aggiuntivi.

Configurazione del server web

Dritta

  • Fai attenzione quando copi/incolla le configurazioni del server web e assicurati di sapere esattamente cosa stanno facendo consultando la documentazione del tuo server web
  • Puoi trovare molti esempi online utilizzando %{HTTP_HOST} (Apache HTTP Server) o $http_host (Nginx) — entrambi potrebbero rendere il tuo sito Web suscettibile ad attacchi di intestazione host HTTP — invece, digita il tuo nome host nella tua configurazione come mostrato qui di seguito.

Se stai usando Nginx, puoi configurare quanto segue:

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://example.com$request_uri;
}

In alternativa, se stai utilizzando Apache HTTP Server, puoi configurare quanto segue:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301]
<IfModule>

Configurazione dell'URL di WordPress su HTTPS

Dopo aver abilitato HTTPS sul tuo server web, dovrai anche configurare WordPress. In teoria puoi farlo manualmente: cambia semplicemente l'indirizzo di WordPress e l'indirizzo del sito nelle impostazioni generali di WordPress. È inoltre necessario eseguire una ricerca e sostituire nel database per modificare tutti i collegamenti del sito Web da HTTP a HTTPS.

[IMMAGINE DELLO SCHERMO]

Quindi molto probabilmente è molto più semplice utilizzare un plug-in per cambiare il tuo sito Web WordPress su HTTPS. Puoi utilizzare un plug-in popolare come Really Simple SSL per aiutarti durante il processo.

Applicazione di TLS sulla dashboard di WordPress

TLS è utile solo se viene utilizzato. Pertanto, vuoi assicurarti che il tuo sito WordPress non solo supporti TLS, ma lo applichi anche. Poiché la dashboard di WordPress deve essere sempre accessibile tramite HTTPS, WordPress include l'opzione di configurazione speciale FORCE_SSL_ADMIN, che può essere impostata su true in wp-config.php.

define('FORCE_SSL_ADMIN', true);

Dritta

  • A seconda della configurazione e della configurazione del tuo sito Web (in particolare, se stai utilizzando un proxy inverso), ciò potrebbe far sì che le richieste alla dashboard di WordPress entrino in un ciclo di reindirizzamento infinito. Per ulteriori informazioni su come risolvere questo problema, consulta la documentazione di WordPress e verifica sempre le modifiche in un ambiente di gestione temporanea prima di implementarle in produzione.
  • Inoltre, assicurati di aver già configurato TLS e di funzionare correttamente prima di impostare FORCE_SSL_ADMIN su true.

SUGGERIMENTO BONUS 1: Aggiunta di HTTP Strict Transport Security (HSTS)

Sebbene reindirizzare tutto il tuo traffico su HTTPS sia un'ottima mossa, sfortunatamente, gli aggressori potrebbero avere ancora qualche asso nella manica. Un attacco noto come striscia SSL consentirebbe a un utente malintenzionato di ingannare il browser per navigare nel sito in HTTP anziché in HTTPS sicuro, sconfiggendo del tutto il tuo duro lavoro.

Per ulteriori dettagli (altamente tecnici) sugli attacchi a striscia SSL, guarda il discorso di Moxie Marlinspike di seguito.

Di conseguenza, i browser ora implementano HTTP Strict Transport Security o HSTS. HSTS non è altro che una semplice intestazione HTTP che dice al browser che non si dovrebbe mai accedere a questo particolare sito Web tramite HTTP, sconfiggendo eventuali attacchi di strip SSL.

Configurazione HSTS sul server web

Dritta

  • Non abilitare HSTS finché non sei sicuro di HTTPS: tutti i visitatori che ricevono questa intestazione HTTP potranno visualizzare il tuo sito solo su HTTPS
  • Imposta sempre l'attributo età massima: facoltativamente, puoi scegliere di impostare un valore basso la prima volta che distribuisci HSTS (per limitare eventuali problemi) e aumentarlo quando sei più sicuro di utilizzare HSTS

Se stai usando Nginx, puoi configurare quanto segue all'interno del blocco del server in ascolto sulla porta 443:

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;

In alternativa, se stai utilizzando Apache HTTP Server, puoi configurare quanto segue all'interno del tuo VirtualHost in ascolto sulla porta 443:

# HTTP Strict Transport Security (mod_headers is required) 
(63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"

Suggerimento bonus 2: configurazione di crittografie TLS

Per garantire che il trasferimento dei dati tra il browser e il server sia sicuro, entrambe le parti accettano di utilizzare ciò che è noto come una suite di crittografia, una combinazione di algoritmi di autenticazione, crittografia e codice di autenticazione dei messaggi (MAC), per negoziare le impostazioni di sicurezza , nonché per trasferire i dati in modo sicuro.

Sfortunatamente, molte crittografie legacy presentano vulnerabilità di sicurezza e non sono più particolarmente sicure da utilizzare. Anche se decidere quali cifrari utilizzare è un affare complicato, Mozilla SSL Configuration Generator rende un gioco da ragazzi scegliere una suite di cifratura TLS adatta alle tue esigenze. Laddove possibile, prova a utilizzare i profili moderni o intermedi, tuttavia, a seconda del tuo caso d'uso, soprattutto se è necessario supportare browser legacy o soddisfare i requisiti normativi e di conformità, potrebbe essere necessario utilizzare configurazioni della suite di crittografia leggermente diverse.

Se utilizzi Nginx, puoi configurare le seguenti crittografie TLS (basate sul profilo intermedio Mozilla SSL Configuration Generator):

 # intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES25
6-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDH
E-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

In alternativa, se si utilizza Apache HTTP Server, si configurano le seguenti crittografie TLS (basate sul profilo intermedio Mozilla SSL Configuration Generator):

# intermediate configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

Puoi anche testare il punteggio di configurazione TLS del tuo sito Web utilizzando uno strumento gratuito chiamato SSLabs per ulteriori approfondimenti tecnici.

Il mio WordPress funziona su HTTPS, è sicuro?

Le icone del lucchetto verde e le parole "sicuro" accanto alla barra degli indirizzi del browser potrebbero averti fatto credere che HTTPS sia una bacchetta magica che risolve tutti i problemi di sicurezza del sito web. Sfortunatamente, non è così. Il lucchetto verde nella barra del browser

HTTPS è solo una piccola parte della sicurezza di WordPress: consente ai visitatori di navigare nel tuo sito Web tramite una connessione sicura . Tuttavia non protegge il tuo sito web come un firewall di WordPress, né lo rende più sicuro. Ciò non significa nemmeno che sia più sicuro di un sito Web in esecuzione su HTTP. Come qualsiasi altra difesa di sicurezza, HTTPS aiuta a risolvere parte del problema.

In altre parole, sebbene dovresti certamente implementare e applicare HTTPS, ciò non significa che puoi stare tranquillo e non preoccuparti mai più della sicurezza. Dovresti ancora:

  • Aggiungi l'autenticazione a due fattori
  • Installa un plug-in di monitoraggio dell'integrità dei file
  • Applica solide politiche per le password di WordPress
  • Conserva un registro delle attività di WordPress come registro di tutte le modifiche che si verificano sul tuo sito web
  • Usa un buon firewall.