Come installare SSL su un sito WordPress

WordPress non è sicuro

Quante volte avete sentito o letto questa affermazione? WordPress paga mediaticamente per almeno tre delle sue caratteristiche:

  • Semplicità: la facilità d’installazione e amministrazione di WordPress porta a pensare che questa piattaforma CMS sia un giocattolo.
  • Popolarità: in tantissimi lo usano, e allora ecco il movimento dei bastian contrari pronti a denigrarlo.
  • Configurabilità: WordPress è altamente customizzabile, spesso senza scrivere una riga di codice, e questo per molti è indice esclusivo di un limite, non di una qualità.

Siti come quello di Forbes (ma ce ne sono tanti altri) dimostrano in realtà come WordPress possa essere una piattaforma valida per soluzioni altamente professionali e scalabili.

La presunta insicurezza di WordPress deriva dal contraltare di quanto descritto sopra:

  • Semplicità: molti utenti, anziché rivolgersi a un professionista, tendono a fare tutto da soli, operazione legittima, ma che inevitabilmente lascia diverse lacune nella configurazione.
  • Popolarità: essere la piattaforma open-source più nota e utilizzata attira inevitabilmente le maggiori attenzioni da parte degli hacker, che hanno l’opportunità di studiare eventuali vulnerabilità e testarle in giro per la Rete.
  • Configurabilità: avere tanti plugin a disposizione aggiunge variabili di vulnerabilità all’intero progetto di un sito in WordPress.

Tutto ciò non significa però che WordPress non possa essere irrobustito, con opportune attività di hardening. Una delle attività che potete effettuare è installare un certificato SSL sul vostro sito WordPress.

Premessa

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 attività che si svolgono online, tuttavia esso presenta delle lacune piuttosto importanti in termini di sicurezza, che lo rendono inadatto per progetti web che implicano transazioni finanziarie o di e-commerce. 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.

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, e offre il certificato SSL assieme a tutti i suoi piani di hosting.

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 un’attività piuttosto onerosa dal punto di vista tecnico ed economico per qualsiasi provider (e, di riflesso, per chi lo acquista).

Per evitare ciò, solitamente viene messa in atto 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.

Nota Bene: 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 configurazione ssl

 

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.

commenti
pingbacks / trackbacks

Lascia un Commento

Inizia a digitare e premi Enter per effettuare una ricerca

Show Buttons
Hide Buttons