IIS7: HTTP-> HTTPS in modo pulito

C’è un modo pulito per redirect tutti i tentativi di andare a una versione HTTP: // di un sito al suo HTTPS: // equivalente?

Penso che il modo più pulito sia come descritto qui su IIS-aid.com . È solo web.config e quindi se cambi server non devi ricordare tutti i passi che hai fatto con la pagina di errore personalizzata 403.4 o altre autorizzazioni speciali, funziona.

               

La soluzione più semplice e pulita che ho trovato è stata

  1. In Impostazioni SSL -> richiede SSL

  2. In Pagine di errore -> Errore 403.4 -> Reindirizza al sito HTTPS

  3. In Pagine di errore -> Modifica impostazioni caratteristiche … -> Imposta errori dettagliati per richieste locali e pagine di errore personalizzate per richiesta remota

Il vantaggio è che non richiede linee di codice aggiuntive. Il rovescio della medaglia è che ti reindirizza a un URL assoluto.

Un modo pulito cambia solo lo schema URL da http -> https e lascia tutto il resto equivalente. Dovrebbe essere lato server in modo che non ci siano problemi con il browser.

JPPinto.com ha istruzioni passo-passo su come è fatto, tranne che usano javascript (HttpRedirect.htm) invece di un reindirizzamento sul lato server. Per qualche motivo, non ho potuto ottenere IE eseguire il javascript se hai abilitato ‘Mostra messaggi di errore HTTP amichevoli’, che è attivo per impostazione predefinita. Un’altra cosa con lo script è che il reindirizzamento al percorso non ha funzionato nemmeno in FF o Chrome. Lo script reindirizza sempre a root. (Forse mi sono perso qualcosa, perché dovrebbe redirect al percorso.)

Per questi motivi ho utilizzato una pagina ASP per il reindirizzamento. Il rovescio della medaglia è ovviamente che ciò richiede che l’ASP classico sia abilitato sul server.

OpsanBlog ha uno script ASP e istruzioni che funzionano bene con IIS6.

Ho avuto alcuni problemi con questo metodo con IIS7. Problemi di interfaccia utente soprattutto, dal momento che IIS7 rende davvero facile perdere qualcosa.

  • Innanzitutto, è necessario installare ASP come funzione di ruolo del server Web.
  • In secondo luogo, l’utilizzo di una directory virtuale non funzionava come previsto in IIS7 e non ho provato a eseguire il debug di questo. Invece, ho inserito il file nella cartella principale del sito e ho utilizzato l’url ‘/SSLRedirect.asp’ nella pagina di errore 403.4 per fare riferimento a esso.
  • Infine, la parte più difficile, NON devi applicare SSL per SSLRedirect.asp . Altrimenti riceverai un errore 403.4. Per fare ciò scegli il file in “Visualizzazione contenuto” di IIS7 e passa a “Visualizzazione funzionalità” in modo da poter modificare le impostazioni SSL per il singolo file e distriggersre la casella di controllo “Richiedi SSL”.

Il gestore IIS dovrebbe mostrare il nome del file nell’intestazione.

global.asax

 protected void Application_BeginRequest() { if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection) Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:")); } 

Penso che con ‘cleanly’ intendi come con un reindirizzamento 300. Config per molti server e lingue qui .