Come molti di voi sapranno, il protocollo su cui è basata l’intera comunicazione del World Wide Web si chiama HTTP (Hyper Text Transfer Protocol), ed è stato ideato, assieme al linguaggio HTML (Hyper Text Markup Language) da Sir Tim Berners-Lee e Robert Cailliau sul finire degli anni Ottanta.

L’http è ancora il protocollo-base per molte delle nostre attività online, tuttavia esso presenta delle lacune piuttosto importanti in termini di sicurezza, che lo rendono inadatto per le transazioni finanziarie o di e-commerce, ad esempio. Sì, perché una GET o una POST in http hanno il difetto di trasmettere i dati in chiaro, pertanto sarebbe molto facile per chiunque sniffare e acquisire dati sensibili come carte di credito, identità, o altro ancora.

Per colmare questa lacuna è necessario acquistare un certificato TLS (Transport Secure Layer) oppure SSL (Secure Socket Layer), che vi permetteranno di gestire tutte le transazioni in HTTPS (Hyper Text Transfer Protocol Secure). Per questo motivo, se avete un sito WordPress che gestisce e-commerce o altre attività sensibili, sarete costretti ad adeguarvi.

In questo post vi spiegherò come aggiungere un certificato TLS/SSL al vostro sito WordPress.

Acquisire un certificato TLS/SSL

Per iniziare, dovrete entrare in possesso di un certificato TLS/SSL, senza il quale non potete fare nulla. Le soluzioni sono almeno tre:

  • Acquistare un certificato condiviso
  • Acquistare un certificato dedicato
  • Procurarsi un certificato gratuito

Le prime due passano necessariamente per un hosting provider. Esistono anche dei servizi che vendono esclusivamente certificati ma il mio consiglio, a meno di condizioni particolari, è di far gestire tutto (hosting, dominio, certificato) da un unico provider, generalmente si spuntano prezzi migliori. Questo è, secondo noi, il miglior hosting WordPress italiano.

Qual è la differenza tra certificato TLS/SSL condiviso e dedicato?

Un certificato SSL dedicato viene associato univocamente a un indirizzo IP. Dato che il numero di indirizzi IP è limitato, associare un singolo indirizzo IP per l’uso di un certificato SSL a ogni singolo sito rappresenta uno spreco ed è per giunta oneroso dal punto di vista tecnico ed economico per qualsiasi provider (e, di riflesso, per chi lo acquista).

Per evitare tutto ciò, viene implementata una tecnologia che prende il nome di SNI (Server Name Indication), che rappresenta la soluzione al problema. L’SNI è un’estensione del protocollo di sicurezza TLS e permette a diversi certificati SSL di condividere lo stesso indirizzo IP e la medesima porta TCP di interrogazione, garantendo così una connessione HTTPS a un sito Web senza che questo utilizzi il medesimo certificato SSL destinato a un altro sito Web attestato sullo stesso indirizzo IP.

Va detto che alcuni plugin WordPress molto popolari come WooCommerce non funzionano con i certificati condivisi, pertanto sarete costretti ad acquisire un certificato dedicato.

Certificati SSL gratuiti

Se non avete esigenze particolari, e siete anche piuttosto pratici di Apache e Web Server in generale potete addirittura pensare di acquisire dei certificati TLS/SSL gratuiti. In questa guida approfondita, Andrea Pernici spiega molto bene come farlo.

Configurare WordPress con HTTPS

Una volta acquisito il certificato, potete dedicarvi ad adeguare il vostro sito WordPress.

Per prima cosa, dovrete modificare le vostre impostazioni generali WordPress, quelle relative alla URL e al sito, passando da http a https.

wordpress ssl https

A questo punto agite sul vostro file .htaccess (lo trovate nella root del vostro spazio hosting, in caso contrario createlo) per configurare il redirect automatico di WordPress da http a https:

  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3. RewriteCond %{SERVER_PORT} 80
  4. RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L]
  5. </IfModule>
Non dimenticate, poi, di ricordare a WP di utilizzare https anche per i vostri accessi alla console di amministrazione. Potete farlo aggiungendo i seguenti paramentri al wp-config.php
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);

E’ possibile che alcuni temi WordPress presentino, blindati nel codice, alcune riferimenti diretti al protocollo http (non è una buona prassi, comunque). In questo caso, sarete costretti a spulciarvi i file del vostro tema alla ricerca della riga dov’è presente ‘http://’, da sostituire con ‘//’. Potete farlo con Unix/Linux, così.

cd /home/percorse/public_html/wp-content/themes/mytheme/
grep -R 'http://' *

Nel caso in cui, invece, vogliate attivare HTTPS solo per un numero ristretto e selezionato di pagine del vostro sito, potete farlo usando appositi plugin WordPress come questo.