Migrare da http a https: la guida tecnica completa ad SSL per il tuo sito

In questa guida tecnica scopriremo come migrare da http a https il vostro sito o progetto web. Guida tecnica completa.

01. Introduzione

Di recente Google ha annunciato lo standard HTTPS come fattore di ranking da qui ai prossimi mesi. Questa notizia  ha da subito gettato il panico un po’ ovunque, in quanto fino a ora lo standard https veniva usato principalmente per siti ecommerce o con interscambio di dati sensibili. Da oggi invece qualsiasi sito (editoriale, personale, istituzionale)  dovrà essere processato con https per non perdere il ranking nelle SERP di ricerca.

Vediamo in questa comoda guida come implementare il certificato nel modo corretto.

NOTA BENE: Questa guida vuole essere volutamente semplice ma tecnica, non mi addentrerò troppo negli aspetti SEO che competono maggiormente ad altri blog specializzati.

02. Acquisto del certificato

Il primo step da fare è acquistare il certificato per il dominio di cui vogliamo l’ssl presso un ente certificatore. Esistono svariare offerte di certificato, piu o meno valide, siccome lavorano davvero bene vi suggerisco serverplan a questo indirizzo. 

I certificati SSL si dividono principalmente in quattro categorie:

  • SSL Domain Validated (DV) – La tipologia di certificato più veloce, più economica ma meno professionale: la Certificate Authority controlla i diritti di attivazione del certificato su uno specifico dominio. L’attivazione di questo certificato può essere effettuata completamente online, solitamente nel giro di 24 ore, e il tuo sito acquisirà l’https e un simbolo di certificazione nella barra che varia a seconda del browser utilizzato.
  • SSL Domain Wildcard Validated (DVW) – Estende le caratteristiche del DV anche ai sottodomini del tuo sito.
  • SSL Organizational Validation (OV) – “Green Bar” Una tipologia di certificato intermedia, in cui la Certificate Authority verifica sia la proprietà del dominio, sia alcune informazioni sull’organizzazione o l’azienda che ne fa richiesta, informazioni che poi verranno visualizzate dai clienti una volta che cliccano sul sigillo di sicurezza del sito.
  • SSL Extended Validation (EV) – La tipologia di certificato più completa (e più costosa). Verrà controllato il dominio e l’azienda, richiedendo anche l’invio di documenti per un controllo più accurato sull’organizzazione/azienda che lo richiede. Una volta ottenuta, può richiedere fino a una settimana, l’url del tuo sito otterrà lo sfondo verde e verranno visualizzate tutte le informazioni più importanti della tua azienda. Es. paypal.

La procedura è semplice:

a) si fa richiesta e si acquista il certificato presso un provider di hosting

b) a seconda del tipo di certificato dovrete aspettare qualche giorno per la validazione.

c) Una volta rilasciato il certificato è diviso in 2 parti essenziali: csr, chiave privata. Queste chiavi vanno installate nel server che risolve il vostro dominio certificato.

Qualora non voleste acquistare un certificato, potete ricorrere a una soluzione free chiamata let’s encrypt. Questo servizio sta letteralmente spopolando perchè offre la possibilità di generarsi i certificati validati per i vostri progetti.Molti hosting lo integrano già (Ovh, etc) altri invece fanno muro in questo senso. Di fatto si installa nel server un bot di certificazione che rilascia il certificato a partire dalla verifica del dominio di proprietà.

Se non avete la possibilità di usare il cert-bot dovrete ricorrere a servizi paralalleli come SSL for free che di fatto ha un bot e rilascia direttamente le chiavi di validazione del certificato che vi serviranno da impostare sul vostro server privato.

03. Installazione sul server

Il metodo di installazione piu semplice è tramite cpanel. Una volta acquistato il certificato dovrete verificare il dominio. Esistono varie forme,e  variano a seconda di dove lo acquistate: via email, record dns oppure file html. Una volta verificato verranno rilasciati due file uno .crt e uno .ca-bundle.

Spostatevi nella sezione SSL-TLS Manager di Cpanel e caricate dapprima il file crt:

crt

dopodichè il file ca-bundle in questa sezione:

install-ssl

Hai problemi di installazione? Ecco una guida avanzata.

04. Passaggio ssl sul tuo sito: gestione codice e risorse

E’ importante un’analisi del proprio sito preliminarmente in modo tale da cambiare qualsiasi risorsa sia richiamata in http. Un “trucco” e best practice è usare per script o risorse esterne anzichè scrivere:

src=”http://tuoscript” scrivete: src=”//tuoscript” etc.

Questo vi permette che la risorse si auto-adatterà nel delivery in base al tipo di protocollo http usato.

05. Migrazione degli url tramite htaccess da http a https

Una volta predisposto tutto il progetto all’erogazione di https dovrete fare il modo che tutte le richieste vengano tramutate in https con redirect 301 (per non perdere SEO). Ecco alcuni codici testati e pronti a tutte le esigenze.

Metodo #1

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

Metodo #2

RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R=301,L]

Codice per WordPress

File: wp-config.php

define('FORCE_SSL_ADMIN', true);
define('WP_HOME','https://tuosito.it');
define('WP_SITEURL','https://tuosito.it');
//Forza SSL

NOTA BENE: per evitare di essere “gialli” per via di risorse non certificate (es. immagini dentro articoli o altro) usate questo plugin. Una volta installato e attivato lasciate tutto com’è e impostate la modalità chiamata “cattura”.

Codice per Laravel 5+

File: App/Providers/AppServiceProvider

    
public function boot()
    {
      \URL::forceSchema('https'); // Forza gli url con https
    }

Dopodichè su htaccess, per forzare il rendering di tutti gli url in https:

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

06. Note avanzate per load balancer o proxy caching

Se usate un proxy cache, proxy o load balancer, potreste incorrere in molti problemi. Il più delle volte, se usate una delle soluzioni precedenti per forzare https il vostro cms andrà in loop infinito di redirect mandando in crash tutto. Questo codice:

Vi permette di settare una variabile d’ambiente SERVER https se il vostro proxy cache (es. varnish) o load balancer passa la richiesta https ad apache. Solo in quest’ultimo caso dovrete, anzichè settare via htaccess fare il redirect forzato direttamente su varnish o sul load balancer.

07. Configurazione HTTPS per CloudFront CDN

Per prima cosa, qualora usiate un CNAME dedicato (es. cdn.tuosito.it) dovrete impostare il custom SSL certificate e importando poi nella schermata che vi apparirà la chiave di certificato per il dominio usato come CNAME – che a sua volta deve comunque essere certificato.

Su origin –> origin protocol policy –> impostate su “Match Viewer” e verificate sia attiva sempre in quella sezione la doppia erogazione HTTP/HTTPS. In questo modo il vostro cdn si adatterà alla richiesta di chi richiede il file, se http erogherà in http altrimenti passerà ad https.

08. Modifica su search console, google analytics

Una volta migrato il sito in https dovrete andare a fare richiesta di cambio dominio per il sito versione http presente nel vostro search console. Ricordatevi anche di creare la proprietà con la versione https (con re-invio doveroso delle sitemap aggiornate).

Dovrete altresì su Google Analytics variare il puntamento in https come da screen:

https-google-analytics

09. Strumenti di analisi online & tools indispensabili

Ecco una comoda lista di tool online per verificare lo status del tuo certificato, o la sua qualità.

https://www.geocerts.com/ssl_checker –> Strumento di verifica attivazione ssl con possibilità di cambiare porta di ascolto per il check (utile per chi installa deve fare i conti con haproxy).

https://www.ssllabs.com/ssltest/ –> Check qualità SSL & status generale

https://www.sslshopper.com/ssl-checker.html –> Check qualità SSL & status generale

https://www.digicert.com/help/ –> Check qualità SSL & status generale

http://tools.seobook.com/server-header-checker/ –> Check header di risposta, utile per vedere se i redirect da http a https funziona correttamente.

https://letsencrypt.org/ –> Progetto open source per generare certificati SSL free tramite CERTBOT o similari.

https://www.sslforfree.com/ –> Usa la tecnologia let’s encrypt per chi non può installare bot di certificazione sul proprio server (utile per host condivisi o provider “chiusi” alla questione).

10. Libri di approfondimento

Ecco alcuni utili libri che vi propongo qualora voleste approfondire il vasto mondo dell’SSL:

Understandig SSL Securing Website 

Libro how-to generico ma molto esaustivo su SSL per mettere al “sicuro” i dati dei vostri clienti.

Guida SSL per DevOPS

Libro per veri DevOps dove si toccano tutte le parti essenziali della crittografia online.

SSL per WordPress

Un libro molto completo che affronta la questione SSL su WordPress.

11.  Conclusioni

Https porta con se numerose problematiche e tempo lavorativo, tuttavia penso che la forzatura di Google sia stata uno “spronare” il passaggio (un pò come si è fatto con Flash), a beneficio di tutti, utenti compresi. In particolare è apprezzato il supporto nativo di https al nuovo standard http più veloce e sicuro. 

Hai problemi a migrare il tuo sito? Chiedimi un preventivo senza impegno.

Spero che questa guida si di aiuto a tutti coloro che vorranno approcciare questo nuovo mondo. Se questo articolo ti è stato utile condividilo sui tuoi social network preferiti o commenta qui sotto!

Image credits “Certificato ssl” disponibile su Shutterstock

  1. Utilissima e chiarissima guida, grazie mille.
    Purtroppo ho qualche problema dal momento che nel mio cPanel manca l’ultimo tasto, quello necessario al caricamento del documento ca_bundle.
    I tasti presenti sono i seguenti:

    Chiavi private (KEY)
    Generare, visualizzare, caricare o eliminare le chiavi private.

    Richieste di firma del certificato (CSR)
    Generare, visualizzare o eliminare le richieste di firma del certificato SSL.

    Certificati (CRT)
    Generare, visualizzare, caricare o eliminare i certificati SSL.

    URL certificato SSL condiviso
    https://prospero.secure.kgix.net/~xxxxx/

    Inoltre, ho utilizzato SSL For Free per ottenere il certificato ed i documenti generati sono stati 3 (e non 2 come sopra indicato) ovvero:
    ca_bundle.crt
    certificate.crt
    private.key

    Come già detto, certificate.crt l’ho caricato senza problemi mentre ca_bundle.crt non lo posso caricare. Cosa se ne deve fare di private.key? Va caricato sempre tramite il modulo Gestione SSL/TLS?

    Grazie

    1. Ciao, il private key va messo nel primo step che vedi sopra-indicato nello screen.
      Ad ogni modo non sono un sistemista e ti posso aiutare relativamente, il mio consiglio è di chiedere se hai problemi nell’installazione al tuo provider di hosting, nella maggior parte dei casi ti aiutano e installano loro (sopratutto se hai almeno una vps).

      Ti allego una guida più esaustiva qui: http://www.inmotionhosting.com/support/website/cpanel/install-ssl-certificates-with-cpanel-ssl-tls-manager

  2. Scusa ma non ho capito una cosa…

    io utilizzo “SSL Insecure Content Fixer” + questo codice in .htaccess
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    è necessario altro codice?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

codice_image
Up Next:

Favicon animate con faviconX

Favicon animate con faviconX