Porównaj certyfikaty SSL
Przekierowanie całego ruchu z HTTP na HTTPS w IIS7 sprawi, że użytkownicy zawsze będą mieli bezpieczny dostęp do witryny. Istnieje wiele różnych sposobów na skonfigurowanie przekierowania IIS7 z HTTP na HTTPS, a niektóre są lepsze od innych. Idealne przekierowanie HTTP na HTTPS wykona następujące czynności:
- Łagodnie przekieruj użytkowników na HTTPS, aby użytkownicy nie musieli wpisywać „https” w adresie URL
- Przekieruj użytkowników na konkretną stronę, do której mieli przejść przez HTTP (page.htm)
- Zapisz wszelkie zmienne przekazane w ciągu zapytania (?page=2)
- Działać we wszystkich przeglądarkach
- Przenosić PageRank na przekierowaną stronę za pomocą przekierowania 301, utrzymując SEO
- Zezwalać na określone części witryny, aby wymusić SSL, ale zezwalać na HTTP w innych częściach witryny
- Przekierowywać użytkowników z mydomain.com do www.mydomain.com
Niestety, nie ma łatwego sposobu na spełnienie wszystkich tych wymagań, a większość metod spełnia tylko kilka z nich. Najlepszą metodą robienia przekierowania HTTP na HTTPS, jaką widziałem, jest użycie ASP.Net do robienia przekierowania HTTP na HTTPS.
Ale większość ludzi nie potrzebuje wszystkich tych funkcji, więc wymieniłem dwie najlepsze metody przekierowania HTTP na HTTPS w IIS 7. Są one łatwe do skonfigurowania i skuteczne w większości sytuacji. Zauważ, że te metody powinny również działać w IIS 8 i IIS 10 z niewielkimi modyfikacjami.
Metoda 1 – Użycie Microsoft URL Rewrite Module
W przypadku tej metody przekierowania z HTTP na HTTPS, będziesz musiał wykonać następujące czynności;
- Zainstaluj Microsoft URL Rewrite Module
- Zainstaluj certyfikat SSL w IIS 7 i powiąż go ze swoją witryną
- Upewnij się, że Require SSL NIE jest zaznaczone w Ustawieniach SSL dla witryny (usuń zaznaczenie pól, które są zaznaczone na tym zrzucie ekranu)
- Kopiuj i wklej następujący kod między znacznikami <rules> i </rules> w swoim pliku web.config w katalogu głównym witryny.
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule> - Sprawdź witrynę, przechodząc do http://www.yoursite.com i upewniając się, że przekierowuje
Metoda 2 – Ustawianie niestandardowej strony błędu
Drugą metodą ustawienia IIS7 przekierowania HTTP do HTTPS jest wymaganie SSL na stronie lub części strony i ustawienie niestandardowej strony błędu 403.4. Aby to zrobić, wystarczy wykonać następujące kroki:
- Zainstaluj swój certyfikat SSL w IIS 7 i powiąż go ze swoją witryną
- W IIS kliknij nazwę witryny i przejdź do sekcji Ustawienia SSL
- Zaznacz Wymagaj SSL i Wymagaj 128-bitowego SSL i kliknij Zastosuj
- Po wykonaniu tych czynności użytkownicy zwykle otrzymają ten błąd:
-
Utwórz nowy plik tekstowy i wklej do niego następujące elementy:
<html>
<head><title>Redirecting...</title></head>
<script language="JavaScript">
function redirectHttpToHttps()
{
var httpURL= window.location.hostname + window.location.pathname + window.location.search;
var httpsURL= "https://" + httpURL;
window.location = httpsURL;
}
redirectHttpToHttps();
</script>
<body>
</body>
</html> - Zapisz plik jako redirectToHttps.htm w katalogu C:Inetpub
- Powrócić do IIS, kliknąć nazwę witryny i dwukrotnie kliknąć opcję Error Pages
- Kliknąć Add… i wpisać 403.4 jako kod statusu. Wyszukaj plik redirectToHttps.htm, który właśnie utworzyłeś i kliknij OK
- Wybierz kod błędu i naciśnij Edytuj ustawienia funkcji…
- Kliknij opcję Niestandardowe strony błędów i ponownie wybierz plik redirectToHttps.htm
- Testuj witrynę, przechodząc do http://www.yoursite.com i upewniając się, że przekierowuje
Zastrzeżeniem używania niestandardowej strony błędu do wykonywania przekierowania IIS7 z HTTP na HTTPS jest to, że przeglądarka internetowa musi mieć włączoną obsługę JavaScript, aby przekierowanie działało.
Inne metody do IIS7 Przekierowanie HTTP do HTTPS:
- Przekierowanie z Http do Https w ASP.NET
- Microsoft Support – How to redirect an HTTP connection to HTTPS for Outlook Web Access clients and how to redirect the Default Web Site to point to the Exchange virtual directory
- IIS 6 Redirect HTTP to HTTPS
- Switching Between HTTP and HTTPS Like A Bigshot Hotshot
Originally posted on Sat Feb 27, 2010