Telefono: +39 392 33 73 731

Cambiare il sito da http a https

Google da gennaio 2017 obbliga tutti i siti web a dotarsi di un certificato SSL, quindi Chrome ma anche Firefox e altri browser hanno iniziato a indicare i siti "http" come non sicuri, vulnerabili.
In questo articolo non mi dilungo sui motivi per cui bisogna portare i siti web in "https", do per scontato che tutto è chiaro e si deve fare il lavoro. Iniziamo con la checklist:

  1. Dotarsi di un certificato SSL, molti hosting lo offrono gratis con Let's Encrypt.
  2. Adeguare il proprio DNS e attivare Let's Encrypt.
  3. Adeguare il proprio sito affinché lavori con https (con note speciali per i siti Contao e Prestashop).
  4. Adeguare Google Analytics e Google Search Console

 

1. Il certificato SSL

Il certificato SSL viene dato con un costo aggiuntivo annuale attorno i 30 euro, ce ne sono anche di più costosi perché dipende se sono certificati DV (Domain Validated) oppure OV (Organization Validated) e da che ente certificatore li emette (Certification Authority). tuttavia esiste anche una versione gratis offerta dalla CA Let's Encrypt. Inoltre cPanel ha un plugin che ne facilita l'installazione (si ottiene il certificato con un click).
Mi sono aggiornato sulle offerte 2017 di vari Hosting Provider, mi sono accorto che i piani sono stati aggiornati includendo SSL gratuitamente proprio grazie a questa interessante iniziativa (Aruba non nomina che certificato DV sta offrendo, ma sospetto si tratti sempre di Let's Encrypt).

Aruba: https://hosting.aruba.it/hosting/linux.aspx (più precisamente: https://hosting.aruba.it/hosting/servizi-inclusi/certificati-ssl-dv.aspx)

Netsons: https://www.netsons.com/hosting.php (Supporto Let's encrypt, più precisamente: https://www.netsons.com/lets-encrypt.php)

Keliweb: https://www.keliweb.it/hosting/ (Supporto Let's encrypt)

Ergonet: https://www.ergonet.it/ (Supporto Let's encrypt)

Quindi oggi è davvero facile ottenere il servizio, credo sia possibile aggiungerlo anche nei piani vecchi.

2. Adeguare il DNS e attivare Let's Encrypt

Confrontandomi con il mio hosting ho saputo che Let's Encrypt vuole un Alias oltre al dominio (quindi si intende il canonico www). Inoltre, questo non va bene inserirlo tramite un CNAME (alias) perché potrebbe avvenire un errore al rinnovo automatico del certificato. Quindi, dobbiamo controllare il DNS affinchè ci siano due record A, uno per la versione "dominio.com" e l'altro per la versione "www.dominio.com". Adeguato questo si può andare nel pannello per aggiungere Let's Encrypt.

Io ho una gestione con cPanel (per Aruba e altri pannelli forse inserirò altre note in futuro), il plugin si trova nella sezione Sicurezza.
Il pannello del plugin si presenta come nella figura sottostante, c'è un bottone New SSL Certificate da premere per aggiungere un dominio, poi si sceglie anche l'alias www con il campo a selezione multipla "Select Alt-Domains". Si salva premendo il bottone Submit, in 10 secondi è tutto finito. Il rinnovo sarà automatico allo scadere dei giorni indicati.

3. Adeguare il sito forzando https

Il lavoro non è finito con l'attivazione di Let's Encrypt, è normale che il sito web adesso funzioni con e senza SSL, e in alcuni casi (Prestashop) vediamo che il sito continua a funzionare forzandoci a vedere solo http, anche inviando https://dominio.com, una beffa eh? Dobbiamo fare in modo che il sito utilizzi solamente https altrimenti i nostri sforzi saranno stati inutili.

Inizio con delle informazioni generiche, valide per qualsiasi sito web PHP, nel mio caso sto modificando un sito col CMS Contao (se invece usi Prestashop, o Wordpress attendi le istruzioni specifiche più avanti). In pratica dobbiamo modificare il file .htaccess affinché compia un redirect 301 per le richieste http verso https. Per farlo basta usare il seguente codice, da mettere subito dopo l'istruzione "RewriteEngine On" (se non c'è mettila).

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

Da questo momento vedrai che il sito funziona con e senza www, mandando verso la rispettiva versione https. Se questa soluzione non ti piace, e vuoi mandare tutte le richieste alla sola versione senza www (a me piace fare così) allora va usata la seguente regola, aggiustando ovviamente il dominio corretto.

RewriteCond %{HTTPS} !=on  [OR]
RewriteCond %{HTTP_HOST} !^dominio\.com$ [NC]
RewriteRule ^ https://dominio.com%{REQUEST_URI} [R=301,L]

... il sito è a posto adesso?

Non ancora! Serve una verifica di tutte le risorse (immagini, js, css) caricate nelle varie pagine. Normalmente con i path relativi è tutto a posto, ma se ci sono path assoluti, scritti a mano nel codice, o salvati nelle aree editabili di un CMS, allora il browser ci indica ancora problemi di sicurezza con il sito web, perché trova questi file con i path che contengono "http://" invece di "https://".

Ecco cosa appare con Firefox.

Ecco come scoprire quali sono questi file "non sicuri" utilizzando l'estensione Firebug nel tab Console.

In pratica sono tutte immagini del blog, il modulo per Prestashop era difettoso, spiego in seguito più dettagli per risolvere questo problema. In tutti gli altri siti web, quando hai questo problema devi cercare di capire da cosa dipende il percorso sbagliato, e quindi correggere.

Nel caso specifico di Contao dovremmo essere tranquilli perché i path sono tutti relativi, anche quelli salvati nei contenuti, le pagine funzionano con il Base Href, e questo appare corretto. Però abbiamo un'altra cosa da sistemare: la sitemap xml. Questa continua a generare i link verso http, dobbiamo andare in Struttura del sito, aprire la pagina root, e abilitare il checkbox come in figura seguente.

... e in caso di Prestashop?

Se usi Prestashop (mi riferisco alla versione 1.6 che ho testato) non devi fare modifiche al file .htaccess, basta aggiustare la configurazione in Preferenze - Generali.
Attiva le due opzioni come in figura sottostante (se ti eri loggato via http ci sarà un link "Clicca qui per controllare che il tuo negozio supporti HTTPS.", puoi cliccarlo, ti cambierà l'area admin da http a https).


Fatto questo serve sempre la verifica del sito. Infatti ho notato alcuni contenuti che caricavano dei banner via http, sono andato nell'editor e ho corretto da codice sorgente come in figura seguente.

Oltre a questo è possibile che ci siano tante immagini salvate all'interno delle pagine CMS o, peggio, delle schede prodotto. Se i prodotti sono centinaia è chiaro che non sia possibile intervenire su tutti singolarmente, a meno che non si voglia perdere tempo inutilmente.
Per correggere tutti i percorsi in pochi secondi è necessario lanciare una query SQL al database, quindi accedi nel tool PHPMyAdmin del tuo hosting ed esegui un REPLACE di tutte le occorrenze che contengono i percorsi errati. Fai un backup di sicurezza prima di iniziare. L'istruzione seguente serve per sostituire tutti i percorsi nel campo "description" della tabella "product_lang", cioè il contenuto delle descrizioni dei prodotti (ovviamente devi cambiare le stringhe con i percorsi che servono a te).

UPDATE `ps_product_lang` SET `description` = replace( `description` , 'http://zorzipet.com/img/', 'https://zorzipet.com/img/' )

Infine c'era un modulo difettoso che elencava i blog con le immagini sbagliate, sono gli screenshot che ho riportato poco fa. Il problema era causato dal codice PHP del modulo, usava la costante "_PS_BASE_URL_" invece di "_PS_BASE_URL_SSL_". Prestashop infatti ha due costanti, le definisce nella funzione init() del file "classes/controller/Controller.php", figura sottostante. Se alcuni moduli funzionano male, è probabile che abbiano lo stesso difetto.

... e in caso di Wordpress?

Lo analizzo prossimamente... se ho tempo.

 

4. Adeguare Google Analytics e Google Search Console

Abbiamo un ultimo ma importante compito: dobbiamo dire a Google che il sito è cambiato.

Per adeguare Google Analytics è proprio semplice, si tratta di un passaggio da 20 secondi. Bisogna andare in amministrazione della Proprietà. Cambiare il campo "URL predefinito" da http a https. Salvare.

 

Per adeguare Google Search Console purtroppo non è così immediato, non ho capito perché Google non abbia reso più semplice la faccenda, sta di fatto che le Proprietà non possono essere modificate. Quindi vanno lasciate stare o cancellate, e dobbiamo aggiungerne una nuova per il sito con versione "https". Poco male, la procedura è identica, la verifica dovrebbe essere istantanea perché riprende il metodo di verifica precedente. Quindi si passa all'inserimento della sitemap, si carica quella nuova con https. Le indicizzazioni ripartono da zero, amen.

Non è finita! Dobbiamo collegare Search Console con Analytics, https con https.
Quindi clicca sulla ghiera in alto a destra, poi Proprietà di Google Analytics.

A questo punto cliccare sul radio button che associa la proprietà di Analytics con il sito Search Console. Questo sovrascriverà l'eventuale collegamento precedente (delle versioni http). Salvare.

Con questo è tutto. L'operazione di conversione del sito a SSL è conclusa. Buon lavoro.

 

Lunedì 20 Marzo 2017
(0 commenti)

Aggiungi un commento

Nome
E-mail (non verrà pubblicata)
Sito Web
Commento
Questo sito web utilizza i cookie. Chiudendo questo banner, o interagendo con questo sito web, acconsenti all’uso dei cookie. Dettagli