Come aggiungere HTTPS su WordPress

Come aggiungere HTTPS su WordPress

HTTPS ti manda fuori di testa? Nessun problema: con questa guida individuerai tutto quello che c’è da sapere sull’argomento! Se sei alla ricerca di una guida per impostare HTTPS sul tuo sito WP sei arrivato nel posto giusto.

Se hai installato WordPress per il tuo sito web, infatti, e vorresti configurare HTTPS nel suo indirizzo (in modo da ottenere qualcosa tipo:

https://tuosito.it

su tutte le tue pagine invece del solito

http://tuosito.it

avrai bisogno di effettuare, come prima cosa, la configurazione del tuo hosting per fare uso corretto di un certificato SSL. Se l’hai già fatto, passa direttamente alla sezione in cui si parla dell’installazione del plugin per WordPress per installare e rendere attivo il certificato.

Panoramica sui tipi di certificati: SSL e TLS

Per installare HTTPS sul tuo sito in WordPress devi sapere, anzitutto, che ci sono molti certificati che puoi scegliere, e che sono stati approfonditi in un articolo a parte di questo sito; non serve conoscerli tutti a memoria, ovviamente, anche perchè in generale la configurazione di base è piuttosto semplice, e non richiede passaggi complicati. Questo avviene soprattutto se decidiamo di fare uso di soluzioni free come Let’s Encrypt, che è diventato particolarmente facile da configurare tanto che molti pannelli di controllo degli hosting come Plesk e cPanel lo propongono come installazione 1-click. Let’s Encrypt ha il grande merito di aver messo HTTPS a disposizione gratuitamente per il grande pubblico, e questo ha cambiato i termini del discorso considerevolmente (all’inizio poteva sembrare che dietro la smania di far passare tutti in HTTPS ci fosse la volontà di commercializzare molti certificati da parte dei servizi di hosting, cosa vera solo in parte ormai). Tra l’altro Let’s Encrypt si auto-rinnova ogni mese, liberando il webmaster dal pensiero di doverlo fare da solo. I certificati scaduti infatti non sono una buona cosa, e fanno smettere il sito di funzionare correttamente.

Nella pratica, comunque, è possibile sfruttare tranquillamente soluzioni gratuite in cui l’ente che certifica il nostro sito è, ad oggi, Let’s Encrypt (va bene per qualsiasi tipo di sito, commerciale o amatoriale che sia). La cosa da tenere in considerazione, senza scendere in troppi dettagli tecnici o strutturali, è che in generale un certificato HTTPS potrebbe avere un costo: Let’s encrypt è un certificato firmato digitalmente dalla stessa, quindi è “generico” in tal senso. Per ottenere un certificato SSL che sia valido e sia di livello più alto si comprano certificati SSL che possono costare qualche centinaio di euro all’anno. Ad esempio in modo che compaia il nome della nostra azienda nel certificato stesso: Keliweb, Tophost, GoDaddy, Namecheap e molti altri tipi di hosting offrono questo servizio a canone annuale. Di solito lo vendono assieme ad un hosting dedicato o con IP dedicato, ma è solitamente possibile selezionare solo il certificato – e spendere qualcosa di meno.

Normalmente, quindi, è possibile configurare Let’s Encrypt ed altri equivalenti servizi di HTTPS gratuito mediante i pannelli di controllo del nostro hosting, quindi cPanel o Plesk (nell’immagine seguente ecco l’icona all’interno di Plesk per Let’s Encrypt). Per la cronaca SSL è il predecessore di TLS, che è invece la versione utilizzata maggiormente nei sistemi crittografici attuali. Una implementazione molto utilizzata sia dell’uno che dell’altro è attualmente rappresentata dal toolkit OpenSSL.

Come prima cosa da fare per installare HTTPS su WordPress, quindi, c’è la necessità di installare HTTPS mediante cPanel o Plesk, in modo tale che le pagine del nostro sito funzionino da subito in HTTPS senza generare errori.

Come configurare un certificato sul proprio dominio in WordPress (Plesk + Let’s encrypt)

Per configurare il certificato di Let’s encrypt e quindi abilitare HTTPS sul nostro sito, apriamo il pannello Plesk del dominio (utilizzerò Plesk in questo esempio, ma è uguale anche per hosting con cPanel), clicchiamo sull’icona di Let’s encrypt – che potete vedere qui in alto – e vedremo subito qualcosa del genere (ho utilizzato il dominio leultime.info giusto come prova).

Spuntiamo il dominio alternativo con www (opzionale, ma consigliato), e facciamo click su Installa per installare il certificato. Dopo qualche secondo di attesa, a questo punto, HTTPS dovrebbe essere confermato e funzionante!

La seconda cosa che bisogna fare per configurare il proprio sito con il protocollo HTTPS è quella di cambiare l’URL di base del sito, facendo login come amministratori ed andando a cliccare su Impostazioni e poi su Generali. Da qui, per i due campi Indirizzo WordPress (URL) e Indirizzo sito (URL), sarà necessario aggiungere una ‘s’ alla fine di http, ed ottenere un indirizzo del sito replicato nelle due caselle quale https://tuosito.it, come ho fatto nell’esempio riportato in basso (ovviamente dobbiamo inserire in questo campo il nome del sito che stiamo configurando: tuosito.it o leultime.info per seguire l’esempio precedente).

Ovviamente tali modifiche vanno confermate scorrendo in basso la pagina e facendo click sul bottone “Salva le modifiche“; questo è soltanto il secondo passo per la configurazione di HTTPS in WordPress, perchè ne è necessario un terzo che bisognerà effettuare modificando il file htaccess del sito web che stiamo configurando.

Come configurare da HTTP a HTTPS (redirect 301)

In certi casi – ammesso che l’hosting disponga di particolari automatismi, o se non usate il plugin riportato alla fine di questo articolo – potreste avere la necessità di forzare il protocollo sicuro HTTPS per fare in modo che tutte le pagine in HTTP (in chiaro) siano redirezionate in automatico sul protocollo sicuro. L’impostazione non è banale ed è importantissima, perchè si rifletterà sia a livello di accessibilità degli URL che di indicizzazione sui motori di ricerca: vediamo quindi come sia possibile attivare questa impostazione.

Se non fosse chiaro o immediatamente comprensibile il perchè sia necessario configurare un redirect 301 o permanente è presto detto: prima dell’arrivo del certificato il nostro sito web funzionava normalmente mediante HTTP in chiaro, adesso funzioneranno entrambe le versioni, sia quella in chiaro (HTTP) che quella criptata (HTTPS), per cui tale situazione è ambigua è decisamente sconsigliato e da risolvere.

Infatti se lasciassimo in sospeso le cose fino a questo punto avremmo:

  1. duplice indicizzazione su Google (URL duplicati);
  2. utenti confusi, che non sapranno scegliere tra HTTP e HTTPS.

Quello che dobbiamo fare è quindi un redirect 301 da HTTP verso HTTPS, per tutti gli URL indistintamente per semplicità; in alternativa, potremmo farlo soltanto per gli URL sensibili come quello di login o quelli di pagamento (se usiamo gateway di pagamento proprietari, ad esempio). Per semplicità vedremo la versione global redirect 301 da HTTP a HTTPS.

redirect 301 HTTP -> HTTPS: esempio base

Mediante FTP o file system di Plesk, basta andare nella root (ovvero la cartella base) del nostro sito (ad esempio /www) e modificare il file in remoto .htaccess (il . davanti indica che si tratta di un file nascosto), inserendo la configurazione seguente:

 RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.tuosito.it/$1 [R,L]

Ovviamente tuosito.it andrà sostituito in tutti gli esempi con l’indirizzo del vostro sito web, e questo tipo di configurazione va bene nel 90% dei casi, quando i siti web in WP usano Apache.

redirect 301 HTTP -> HTTPS: esempio base (alternativo)

Una ulteriore versione della stessa configurazione, che non richiede modifiche e può essere copia-incollata direttamente per il vostro sito, può essere la seguente:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

redirect 301 HTTP -> HTTPS: esempio per siti senza prefisso www

Ecco una ulteriore versione del file htaccess utilizzabile su un sito web senza www davanti (nell’esempio, prova-sito.it):

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://prova-sito.it/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

redirect 301 HTTP -> HTTPS: esempio per siti con prefisso www

Per i siti web per cui è presente una duplice versione con www davanti, già pre-configurata a dovere su HTTP, è possibile sfruttare questa configurazione.

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Ricordatevi che questo tipo di configurazione andrà eventualmente amalgamata con quelle che siano eventualmente già presenti per il vostro sito, integrando le modifiche con eventuali configurazioni pre-esistenti. Se non lo farete correttamente, il vostro sito non funzionerà più! Se non siete molto esperti potrebbe essere opportuno testare una delle tre possibilità singolarmente, e verificare quella che effettivamente funziona.

Si ricorda che tutte queste impostazioni forniscono le direttive necessarie al sito per impostare HTTPS per tutte le pagine, senza distinzioni, che è un caso comune ma non sempre fitta con le nostre effettive necessità.

Ricordatevi quindi che le modifiche sopra esposte vanno INTEGRATE CON LA CONFIGURAZIONE corrente di htaccess: se sostituite l’intero file “alla grezza” con la versione qui riportata, per intenderci, cancellerete le vecchie configurazioni di htaccess (una su tutte: i permalink) e rischierete di non fare funzionare più il vostro sito. Tenete quindi conto della corretta sintassi per integrare htaccess sia per i permalink che per HTTPS che per altri eventuali direttive che avevate inserito (redirect 301, ad esempio). In questi casi, in effetti, la cosa migliore è quella di salvarsi la vecchia configurazione in backup locale, e provare a mettere insieme le due configurazioni tenendo conto delle seguenti regole pratiche:

  • RewriteEngine On, se presente, deve comparire una volta sola nel file;
  • le due righe successive vanno inserite alla fine, in coda alle configurazioni che già avevate inserito, come nuova riga.

Di seguito un esempio di integrazione corretta: ho inserito in coda alla configurazione esistente, nello specifico, le due finali.

Usando server NGINX, in alternativa, la configurazione equivalente per passare da HTTP ad HTTPS sarà su questa falsariga:

server {
server_name tuosito.it www.tuosito.it
return 301 https://tuosito.it$request_uri
}

Questo tipo di configurazione permette di passare ad HTTPS su tutte le pagine del vostro sito, ed è in linea apparentemente con le indicazioni per i SEO che secondo Google rendono un fattore di ranking SSL stesso. Su questo mi sono sempre permesso di avere dei dubbi (che in generale vi possa essere stato un fraintendimento generale), perchè dal mio punto di vista ha più senso utilizzare HTTPS solo all’interno delle pagine su cui vanno a finire dati sensibili come avviene nelle pagine di login.

Configurare SSL solo per le pagine di login di WordPress

Se volete configurare HTTPS sulle pagine di login c’è un passo differente da compiere, che consiste in una modifica del file wp-config.php (e fermo restando il primo passo per la configurazione del certificato Let’s Encrypt, pre-condizione sempre necessaria prima di effettuare qualsiasi modifica).

La direttiva da aggiungere a fine di questo file, sia per siti WordPress singoli che per multi-siti, editandolo via FTP:

define('FORCE_SSL_ADMIN', true);

Tenete conto che passare ad HTTPS su un sito è in generale una modifica drastica alla configurazione che Google, ad esempio, potrebbe non recepire correttamente: la cosa importante in questi casi è che i precedenti risultati (quelli già indicizzati sul motore di ricerca) siano correttamente “informati” della modifica, e questo può avvenire tipicamente mediante un redirect 301. La modifica al file .htaccess / NGINX che abbiamo visto, in effetti, serve a venire incontro esattamente a questo genere di necessità.

Se avete eseguito correttamente tutti i passi indicati, browser come Chrome e Firefox indicheranno chiaramente nella barra degli indirizzi che il vostro sito è protetto da HTTPS. Se aveste difficoltà ad eseguire questi passi vi suggerisco di affidarvi alla consulenza di un esperto del settore o di personale qualificato.

HTTPS dal punto di vista SEO?

Si considera ufficiale che l’uso di HTTPS per un sito web sia effettivamente un fattore di posizionamento SEO fondamentale, tanto più che esiste anche un articolo del blog di Google che ne parla (HTTPS as a ranking signal, per chi non l’avesse letto). In altri termini, se avete un sito web e siete passati da poco da HTTP ad HTTPS è lecito attendersi qualche miglioramento sul posizionamento di alcune pagine. Certo è che bisogna configurarlo correttamente, come abbiamo illustrato, e bisognerà fare attenzione a tre cose:

  1. che non ci siano pagina frammiste tra alcuni URL interni in HTTP ed altri in HTTPS;
  2. che i redirect 301 da HTTP a HTTPS siano tutti funzionanti e attivi;
  3. che HTTPS sia funzionante e scansionabile da Google (verificare dalla Search Console e, se necessario, registrare un nuovo indirizzo del sito come HTTPS://nomesito.est);

In genere, non ho riscontrato particolari vantaggi su altri siti che curo passando semplicemente ad HTTPS, e non mi aspettavo che un fattore singolo, isolato rispetto al contesto, potesse essere così importante come in tanti scrivono. Certo è che si tratta di un fattore importante, anche perchè conferisce maggiore sicurezza al visitatore e, in linea di massima, è anche un fattore di ottimizzazione indiretto: incrementa la permanenza del sito, probabilmente riduce un po’ anche il ribalzo e, insomma, male certamente non fa.

Per attivarlo come ranking factor SEO, tuttavia, dovrebbe sempre far parte di una strategia editoriale solida o, se preferite, concorrere al posizionamento assieme ad altri elementi di ottimizzazione: i title, le descrizioni delle pagine, i link interni ben strutturati e soprattutto (direi) i backlink dall’esterno, che dovranno essere sempre di alta qualità e valore.

Se pensi che sia arrivata l’ora di passare il tuo sito in HTTPS, puoi seguire le indicazioni che ti darò in questo articolo. Non sarà difficile, aumenterà i tempi di caricamento del tuo sito (ammesso che sia stato fatto a regola d’arte), darà una maggiore autorevolezza e idea di professionalità allo stesso agli occhi dei tuoi visitatori (con il famoso lucchetto verde che si accenderà per ogni browser che ti visita) e non ti impedirà di utilizzare normalmente tutti i plugin ed i temi con cui lavori abitualmente.

Il miglior plugin per passare WordPress in HTTPS

Premessa: per fare quanto descritto in questa pagina, come prima cosa dovrai avere SSL abilitato sul tuo hosting. Questo significa che il tuo hosting dovrà supportare un certificato SSL qualsiasi e darti la possibilità di abilitarlo via Plesk o cPanel. In certi casi, come ad esempio per l’hosting Aruba, il certificato SSL può essere già disponibile senza che venga ancora utilizzato: significa che il sito risponde indifferentemente (ed in modo corretto e privo di errori) sia con HTTP://tuosito.it che con HTTPS://tuosito.it. Per abilitarlo e rendere effettiva la modifica per tutti i tuoi visitatori, dovrai farlo via sito con il plugin che adesso ti mostrerò.

Ricordati inoltre che:

  • via plugin sarà necessario attivarlo su tutte le pagine (non solo su quelle di login, e questo per evitare il problema del mixed content, cioè di pagine web “miste” con HTTP e HTTPS, il che è visto come una cosa negativa ed invalida il senso stesso di HTTPS);
  • basterà un click per farlo, non preoccuparti (…massimo due!);
  • sì, è necessario che lo attivi anche tu; certe diatribe del passato sulla necessità di farlo, con la grande diffusione di certificati gratuiti, lasciano ormai il tempo che trovano;
  • sarà possibile redirezionare tutto il traffico in HTTP automaticamente in HTTPS, ma questo, come vedremo, il plugin di cui parleremo lo farà in automatico.

Il plugin di cui parliamo è Really Simple SSL, che come suggerisce il nome è davvero semplice da usare ed altrettanto efficace. Really Simple SSL abilita con un paio di click il certificato SSL per il tuo sito in WordPress; ho avuto modo di testarlo con successo sia su un sito single site (le installazioni standard di WP) che su uno multisite ed ha funzionato egregiamente in entrambi i casi. Esistono due versioni di Really Simple SSL, quella free che trovate sul repository va bene per la maggioranza dei siti (inclusi i multisite gestiti mediante path), mentre quella premium a pagamento permette di attivare le caratteristiche selettivamente per i multisite (ad esempio su un sito attivare SSL, su un altro invece no). Nella versione premium inoltre sono inclusi degli utili tool che possono aiutarvi, ad esempio, a fare diagnostica nel caso abbiate problemi di mixed content.

Per installare Really Simple SSL:

  1. Assicuratevi che SSL sia attivo e funzionante sul vostro hosting (dovrete attivarlo da Plesk o cPanel o chiedere all’assistenza dell’hosting che usate);
  2. Installate il plugin sul vostro sito;
  3. Attivatelo;
  4. Seguite le indicazioni riportate a video per abilitare SSL;
  5. Se tutto è andato nel verso giusto, dovrete fare login nuovamente e a questo punto tutto funzionerà come prima, solo che sarete in HTTPS.

Prima di procedere con le operazioni in questione si suggerisce di mettere temporaneamente offline il sito, giusto per evitare problemi di navigazione ai visitatori presenti sullo stesso in quel momento.

Non sono richieste impostazioni complicate perchè in genere viene fatto tutto in automatico, l’unica accortezza riguarda i domini con sottodomini annessi per cui non sempre è possibile attivare in automatico per tutti quelli richiesti.

Photo by Sean MacEntee

Ti piace questo articolo?

6 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.

Come aggiungere HTTPS su WordPress

Votato 8.67 / 10, da 6 utenti