Перенаправление HTTP на HTTPS в IIS

Опубликовано: 07.09.2013
Автор: Виталий Бочкарев
Поддержать автора статьи по этой ссылке

Мне потребовалось перевести одно корпоративное приложение на шифрованный трафик. Чтобы выполнить эту задачу я проделал такую операцию.

1. С помощью корпоративного центра сертификации я по шаблону для Веб-серверов сгенерировал сертификат для доменного имени toolbox.domain.com, в виртуальной папке которого находится приложение. Добавил полученный сертификат к IIS серверу.

Примечание. Здесь и далее имя корпоративного домена заменено на domain.com.
Website - Http to https redirection
Сертификаты сервера IIS

2. В настройках веб-сайта проверил IP-адреса и порты, по которым отвечает веб-сайт для нешифрованного трафика.

Website - Http to https redirection
Порты веб-сайта для нешифрованного трафика

3. Для приложения, которое надо перевести на шифрованный трафик, указал в качестве источника пустую папку.

Website - Http to https redirection
Основные свойства приложения для нешифрованного трафика - указана пустая папка в качестве источника

4. В свойствах виртуального приложения в разделе HTTP Redirect отметил параметр "Redirect requests to this destination" и указал адрес, на который нужно переводить все запросы по порту 80: https://toolbox.domain.com/MyAccount. Так же указал параметр Redirect all requests to exact destination, чтобы переводить все запросы к точное место назначения вместо относительных путей назначения.

Website - Http to https redirection
Перенаправление на HTTPS при вызове приложения в нешифрованном трафике

5. Далее я создал новый веб-сайт, который отвечает по тому же IP-адресу, что и основной сайт, но использует порт 443 и сертификат Веб-сервера.

Website - Http to https redirection
Веб-сайт для шифрованного трафика по порту 443 (SSL).

6. В SSL свойствах нового сайта я указал Requre SSL и Client certificates: Accept, чтобы требовать SSL подключения и принимать сертификат от клиента, если он есть.

Website - Http to https redirection
SSL свойства веб-сайта по шифрованному трафику

7. В новом веб-сайте я создал точно такое же виртуальное приложение, которое было в незащищенной версии, а в свойствах этого нового веб-приложения я указал папку с веб-страницами и кодом приложения.

Website - Http to https redirection
Основные свойства приложения для шифрованного трафика - указана папка сайта в качестве источника

8. Когда все настройки сделаны, нужно перезапустить IIS сервер с помощью команды iisreset, и можно переходить к тестированию.

Теперь, когда пользователь наберет в адресной строке имя основного веб-сайта, например http://toolbox.domain.com, то он останется на незащищенном протоколе. Но как только ему потребуется перейти к приложению MyAccount, для которого я делал настройки перенапраления, сервер перебросит пользователя на защищенный веб-сайт.

Кстати, обратного перенапраления с HTTP на HTTPS не произойдет, когда пользователь захочет вернуться в основной раздел toolbox.domain.com, и другие приложения работать не будут, так как их просто-напросто нет в SSL версии сайта. Чтобы решить эту проблему, нужно поставить перенапраление с HTTPS на HTTP для веб-сайта ToolboxSSL.