Вопрос: Элегантное использование SSL в IIS 6.0


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

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

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


4
2018-05-20 21:29


Источник




Ответы:


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

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


3
2018-05-20 21:34



Редактирование кода не поможет, так как запрос никогда не попадет в код, если https применяется на уровне IIS. - Ryan Bolger
Однако, если флаг выключен (разрешить http), их код будет запускаться и перенаправляться чисто. - sysadmin1138♦
@Ryan, sysadmin1138 верен, я обновил свой ответ, чтобы быть более ясным. - Jimmie R. Houts
ОК. Благодарю. Я почти понял, что это был ответ. Мне очень хотелось бы увидеть функцию «автоперемотки» в IIS 8, чтобы сделать такую ​​вещь автоматической. Кажется, отходы засоряют метабазу IIS дополнительными сайтами, которые просто перенаправляются. - kdmurray
Что касается опции кода, необходимо отключить вариант HTTP-сайта, вот в чем причина необходимости применения SSL для начала. Просто делать переадресацию в коде (если она не выполняется на высоком уровне, так что это происходит на любой странице), потенциально можно разрешить просмотр закладок по небезопасной ссылке. - kdmurray


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

Если сервер / сайт / 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 для сервера / сайта / vdir для 403.4 / 403.5 и установите для MessageType URL-адрес и URL-адрес для «/CustomError/403_4_Error.asp».

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


8
2018-05-20 22:04



Это метод, который мы используем. - sysadmin1138♦
Спасибо за это. Я действительно искал решение на стороне сервера (не кодовое) для этого, поскольку мы отмечаем весь домен как требующий SSL. Я буду иметь это в виду для любых будущих приложений. - kdmurray
Это полностью серверная сторона - она ​​выполняется в обработчике страницы ошибок сервера. - Christopher_G_Lewis
+1 никогда не думал об использовании страницы с ошибкой для этого. Очень элегантно. - Jimmie R. Houts
+1 для этого, это очень легко сделать в IIS7, поскольку вы можете указать перенаправление прямо с страницы настройки ошибки - Whisk


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


0
2018-06-02 17:09