Come reindirizzare automaticamente da http ad https su framework Asp.Net e web server IIS

Hai già sentito parlare sicuramente di https. E probabilmente sai che a breve diventerà un “must” per qualsiasi sito internet. Forse non usi un hosting per il tuo sito web basato su sistema operativo Linux, e se lo stai facendo con un sistema Windows, quasi certamente il tuo web server si chiama Internet Information Server (IIS). E forse non sai come installare un certificato SSL sul tuo hosting per attivare il protocollo https.Asp.net ed IIS, il framework ed il web server di Microsoft

Perchè usare https?

https è il protocollo che consente lo scambio sicuro dei dati tra un client, in questo caso il browser che usiamo per navigare, ed il server al quale i dati vengono richiesti, in questo caso il sistema che ospita il sito web sul quale stiamo navigando.

Senza entrare troppo nei tecnicismi possiamo dire che quando il browser cerca di navigare su un sito protetto tramite https il dialogo con il sistema che fornisce la pagina da navigare viene protetto in modo da non essere leggibile da qualcuno interessato ad intercettarne il contenuto e carpirne i dati che vengono scambiati, per esempio per intercettare un account utente e la relativa password.

Potrebbe sembrare una precauzione eccessiva, o che gli sguardi indiscreti vengano piuttosto indirizzati verso “elementi maggiormente sensibili”, oppure, ancora, che mettere in funzione un sistema per intercettare i nostri dati sia così complesso da non essere implementato da nessuno e quindi che si possa dormire sonni tranquilli.

In effetti non è così, e soprattutto siti web in cui vengano scambiati dati come nome utente e password, o peggio ancora informazioni relative ad una carta di credito come in un e-commerce, devono assolutamente essere protetti tramite questo tipo di servizio.

E poi? Ci sono altre ragioni valide?

Se questo non fosse sufficiente per convincerti che devi usare https sul tuo sito web, devi sapere che a partire da gennaio 2017 sia Google Chrome che Mozilla Firefox, due tra i browser più utilizzati in assoluto, segnaleranno ai loro utenti i siti che non utilizzano il protocollo https nei casi in cui invece venga ritenuto necessario la presenza di questo livello di sicurezza.

Inoltre ad agosto 2017 Google ha inviato la seguente comunicazione a tutti i webmaster:

A partire da ottobre 2017, Chrome (versione 62) mostrerà l’avviso “NON SICURO” quando gli utenti inseriscono del testo in un modulo su una pagina HTTP e su tutte le pagine HTTP aperte con la modalità di navigazione in incognito.

Il nuovo avviso fa parte di un piano a lungo termine volto a contrassegnare come “non sicure” tutte le pagine pubblicate tramite il protocollo HTTP. 

(ti ricordiamo che ad oggi Google Chrome è il browser più utilizzato in assoluto, quindi la maggior parte degli utenti che arrivano sul tuo sito riceveranno questo avviso se non avrai implementato il protocollo sicuro https).

Quali conseguenze possiamo immaginare? Molto probabilmente gli utenti saranno intimoriti da segnalazioni di questo tipo, e possiamo presumere che andranno a fare le loro ricerche altrove, magari sul sito web del tuo concorrente che invece ha attivato https. E questo non è quello che vuoi che accada, vero?!?

Adesso che ti sei convinto ad alzare il livello di sicurezza sul tuo sito web, forse ti stai facendo qualche domanda…

Cosa serve per attivare un servizio di sicurezza per il sito web?

Lo scambio dei dati protetto è possibile grazie al fatto che sul sistema che fornisce il servizio viene installato un cosiddetto certificato SSL (Secure Sockets Layer) emesso da una entità terza riconosciuta come ente certificatore qualificato, in grado di assicurare che quel sistema sia effettivamente chi dice di essere, e di fornire un sistema in grado di criptare la trasmissione dei dati tramite una chiave di cifratura univoca.

Quindi, l’elemento fondamentale per il funzionamento di tutto il meccanismo è il certificato SSL che, tramite una apposita procedura ci verrà rilasciato da una entità autorizzata a farlo.

Cosa succede dopo aver installato il certificato SSL?

Una volta installato il certificato sul nostro server web, il browser dell’utente che lo sta navigando, mostrerà un lucchetto di colore verde a fianco dell’indirizzo del nostro sito, come mostrato nella figura seguente:

come appare il lucchetto verde che sta ad indicare che il sito è sicuro

La procedura per la richiesta e generazione del certificato SSL

Per ottenere il certificato SSL è necessario seguire una procedura che consiste nei seguenti passaggi:

  • Generare sul proprio web server il CSR (Certificate Signing Reques)
  • Inviare il codice CSR ad un ente qualificato per il rilascio del certificato SSL
  • Ricevere il certificato SSL (che non è niente altro che un file)
  • Installarlo sul proprio server web

L’ultimo passaggio è quello più tecnico all’interno di questa fase della procedura di messa in sicurezza della comunicazione del sito, ed è differente a seconda del web server utilizzato.

Dopo questa procedura rimangono ancora alcuni passaggi da fare se si vuole mantenere il posizionamento raggiunto sui motori di ricerca, ed in particolare è necessario fare in modo che in qualsiasi condizione l’utente digiti o acceda alla URL del nostro sito (solo con www. oppure digitando ancora il vecchio http://), venga sempre presentata la versione agganciata al certificato SSL, quindi venga rimandato alla versione https.

Questo si fa tramite quello che viene chiamato “redirect 301“, cioé utilizzando un sistema standard e universalmente riconosciuto, in base al quale si comunica al browser dell’utente che la versione corretta da richiamare è quella che inizia con https://

Questo sui sistemi basati su sistemi operativi Linux, quindi per esempio quelli che utilizzano CMS come WordPress o Joomla, si fa agendo su un particolare file di configurazione, il cosiddetto .htaccess. Che però non esiste nel mondo dei web server basati su tecnologia Microsoft, quindi su server Windows.

Al di la del sistema operativo che ospita il sito, è ancora necessario individuare se stiamo parlando di un server web ospitato in un ambiente a nostra totale disposizione, come per esempio un nostro server proprietario oppure un sistema in housing presso un provider (quindi una macchina di nostra proprietà ma ospitata in una server farm di un provider), oppure ancora di una VPS, quindi sistema dedicato ma fisicamente ubicato anche in questo caso presso un provider, oppure se stiamo parlando in un sito web ospitato in un hosting condiviso. In quest’ultimo caso si tratta di un sistema completamente gestito e governato dal provider che fornisce il servizio, e per il quale non si ha accesso completo alle parti di configurazione.

Le problematiche di https legate ai server IIS su Windows

Nel caso di un server a cui si ha accesso totale, anche per i server web basati su Windows e quindi su IIS (Internet Information Server) è possibile impostare a proprio piacimento tutte le configurazioni, quindi anche il redirect 301.

Ma quando non si ha l’accesso totale al server, come è il caso di un hosting condiviso, non è possibile accedere alla configurazione di tutto quanto necessario per forzare la redirezione da http ad https.

In questo caso ci viene in aiuto il file di configurazione del sito web, che nel framework Asp.net si chiama Web.config.

Per forzare il browser a fare la propria richiesta ad una risorsa su protocollo sicuro, quindi su https invece che sul semplice http, sarà necessario aggiungere la seguente sezione di configurazione all’interno del proprio Web.config:

Come configurare web.config per forzare apertura risorse in https su asp.net e IIS

Una volta aggiunta questa sezione tutti i browser verranno forzati ad eseguire le richieste di accesso al sito tramite il protocollo https.

Google Search Console

Se usi Google Search Console (e se non la usi ancora dovresti iniziare a farlo al più presto!), non dimenticare di aggiungere due nuove proprietà per il tuo sito, entrambe con il nuovo protocollo https, una per la versione “www” del sito ed una per la versione “non www”.

Per quanto riguarda le vecchie proprietà con il protocollo http, non avere fretta di cancellarle, perché quando le cancellerai perderai tutti i dati relativi alle visite al tuo sito registrate fino a questo momento.

I dati delle visite al tuo sito nella versione https verranno registrate nelle due nuove proprietà a partire dal momento in cui, su Google Search Console, le avrai attivate. Quindi, se ti interessa vedere i dati “storici” dovrai continuare ad accedere alle vecchie proprietà, mentre per vedere i dati da questo momento in poi dovrai accedere alle nuove proprietà.

Quando posso cancellare le vecchie proprietà in http?
Non esiste una risposta univoca a questa domanda. Sicuramente potrai cancellarle nel momento in cui non ti interesserà più visualizzare i dati storici.
Inoltre, come saprai, la vita dei dati su Google Search Console non è eterna, ma dopo alcuni mesi Google provvede a cancellarli (fino a poco tempo fa li manteneva per tre mesi, mentre adesso siamo arrivati ad uno storico di un anno). Quindi, quando sulle vecchie proprietà di Search Console non troverai più i tuoi dati, a quel punto potrai provvedere a cancellarle.

Google Analytics

Anche su Google Analytics sarà necessario indicare che il tuo sito è ora raggiungibile utilizzando il protocollo https.

Per fare questo devi accedere all’area di amministrazione dell’account con il quale gestisci il tuo sito, andare nella sezione “Impostazioni proprietà”, e per ogni proprietà associata al tuo sito web indicare che il protocollo è https nel campo “URL predefinito”.

Conclusioni

Installare un certificato SSL non è più una opzione, ma sta diventando estremamente necessario, tanto che molti provider hanno iniziano a fornirlo gratuitamente con i propri piani di hosting (proprio in concomitanza con il rilascio dei nuovi allarmi che sono stati lanciati da Chrome e Firefox).

Diventa quindi necessario prepararsi e predisporre tutto il necessario per affrontare questa nuova situazione del web, e per chi (come noi) utilizza anche il framework Microsoft Asp.net, è necessario andare a scovare alcune piccole chicche per far funzionare tutto quanto anche quando ci si muove su piattaforme non proprietarie o su cui non si ha accesso completo.

E se per caso hai ancora qualche dubbio o hai bisogno di supporto per la migrazione da http ad https, non esitare a contattarci tramite il modulo di contatto.