Назад | Перейти на главную страницу

Элегантное применение SSL в IIS 6.0

У меня есть веб-сайт, работающий под IIS, к которому применен сертификат SSL. Мы хотели бы принудительно использовать HTTPS для веб-сайта, что легко сделать, установив флажок «Требовать безопасный канал», но это немедленно лишит людей возможности подключаться по HTTP (как задумано).

Я бы хотел найти способ автоматически перенаправлять людей с HTTP -> HTTPS, если они вводят неправильный код (или подключаются со старой закладки).

Есть ли способ сделать это без создания второго веб-сайта в IIS?

Я разместил это на Переполнение стека

Если сервер / сайт / vdir настроен с использованием параметра «Требовать безопасный канал», ответ сервера будет «403.4 Запрещено: SSL требуется для просмотра этого ресурса». ошибка или сообщение «403.5 Запрещено: для просмотра этого ресурса требуется SSL 128».

Фактически вы можете настроить ошибку 403.4 или 403.5 для перенаправления обратно на HTTPS. Создайте VDIR на своем сайте с помощью НЕТ требования SSL (**Это важно) - использую "CustomError". Создайте в этом каталоге файл ASP с именем 403_4_Error.asp, содержащий следующее:

<%@ LANGUAGE="VBScript" %> 
<%
if Request.ServerVariables("HTTPS") <> "on" then
    sServer = Request.ServerVariables("SERVER_NAME")
    sScript = Request.ServerVariables("SCRIPT_NAME")
    sQuery  = Request.ServerVariables("QUERY_STRING")
    Response.Write("https://" & sServer & sScript & "?" & sQuery)
end if
%>

Отредактируйте свойство Custom Error server / site / vdir для 403.4 / 403.5 и установите для MessageType значение URL, а URL-адрес - «/CustomError/403_4_Error.asp».

Обратите внимание, что используется ASP, вы можете легко использовать ASP.net или любой другой язык сценариев.

Если вам нужно сделать это на уровне сервера, вам придется создать другой сайт и перенаправить его на сайт https.

Если вы можете редактировать код, вы можете не принудительно использовать ssl на уровне сервера, вместо этого вы можете сделать это на своем веб-сайте, определив, начинается ли URL-адрес с http: и вместо этого перенаправив на тот же URL-адрес с https :.

В итоге мы сделали это в коде нашего приложения; наш базовый класс страницы заранее проверяет, находится ли он в HTTP, и при необходимости перенаправляет на HTTPS. Это действительно зависит от того, насколько вы доверяете своему коду приложения :)