Настройка SSL на IIS для одного или нескольких сайтов
Добрый день уважаемые читатели и гости блога, сегодня мы с вами продолжим изучать, веб сервисы на базе Windows, а именно, посмотрим, как производится настройка SSL на IIS для одного или нескольких сайтов, как с одним Ip адресом, так и с несколькими. Для выполнения этой, поставленной задачи у вас должен быть установлен веб сервер iis, на Windows Server начиная от 2008 R2 и выше, на текущий момент самый последний, это Windows Server 2016.
Настройка https сайта на IIS
И так про создание сайта iis на windows server 2012, я вам уже рассказывал, подразумевается, что он у вас есть. Далее, когда вы прописали все DNS записи, вы генерировали запрос на выпуск сертификата и уже потом получали от центра сертификации ваш сертификат, но его еще приходилось затачивать под iis, так как ему нужен формат pfx.
Еще немного теории и ограничения
Если у вас один сайт на https на вашем iis сервере, то проблем с сертификатом не возникнет, если же планируется два сайта, то тут уже есть варианты:
- Купить wildcard сертификат, чтобы была возможность вешать SSL на любой сайт IIS
- Купить дополнительный ip для каждого сайта
- Воспользоваться скриптом и применить привязку нужного SSL к нужному сайту, на одном Ip адресе
- Воспользоваться технологией SNI (Server Name Indication)
Установка SSL в PFX
Первым делом для создания сайтов на протоколе https, вам необходимо импортировать нужный сертификат, делается это очень просто. Вы открываете, диспетчер IIS и переходите в пункт "Сертификаты сервера"
Далее в поле "Действия" вы нажимаете импортировать.
Через обзор, указываете ваш pfx архив.
Указываете пароль, в строке "Выбрать хранилище сертификатов" укажите либо "Личный" подойдет для обычного размещение, а вот пункт "Размещение веб-служб" нужен для SNI технологии.
По сути, это и есть сложная установка SSL в iis, как вам такое.
Теперь произведем привязку SSL сертификата к нужному сайту. Для начала я проверю свой сайт на протоколе http, как видите все отлично работает.
Теперь щелкаем по нужному сайту правым кликом и выберем пункт "Изменить привязки", именно там мы и произведем настройку https в iis.
Как видите ваш сайт по умолчанию, будет работать по протоколу http, нажимаем кнопку добавить.
Указываем для сайта:
- Тип https и номер порта, по умолчанию, это порт 443, убедитесь, что он открыт у вас в брандмауэр.
- В имени узла, пишем полное название сайта.
- SSL-сертификат > выбираем нужный и сохраняем настройки.
Проверяем ваш сайт по протоколу HTTPS, если все отлично, то вы увидите закрытый замочек, это значит, что ssl сертификат установлен в IIS правильно.
Настройка нескольких HTTPS сайтов на разных ip
Предположим, что у вас есть два сайта:
- api.pyatilistnik2010.ru
- new.pyatilistnik2010.ru
Вам необходимо, чтобы каждый из них имел свой ip привязанный к DNS имени и так же отдельный сертификат, тут все просто. Вы так же поднимаете отдельные сайты, с той лишь разницей, что в поле ip адрес, указываете нужный и в поле имя узла, адрес вашего ресурса, ну и собственно нужный сертификат.
Сохраняем и проверяем, должно все работать, на любой из версий сервера IIS от 7,5 до 9.
Настройка нескольких HTTPS сайтов на одном ip
Теперь представим себе ситуацию, что у вас один внешний ip адрес, как быть, пробуем повесить все на него. В итоге один из сайтов у вас получит 404 ошибку, кто не в курсе, что это такое, то вам сюда.
Вся проблема в том, что в IIS по такому сценарию, в веб интерфейсе может работать, только сертификат на домен, формата wildcard *.pyatilistnik.org. Звездочка подразумевает, что вы можете использовать SSL на любой домен третьего уровня. Но не смейте сдаваться, есть два выхода:
- Использование технологии SNI (Server Name Indication) в IIS, подходит для всего старше версии 7.5, так, что Windows Server 2008 R2 и ниже в пролете.
- Использовать скрипт от Microsoft.
Вот вам пример такого сертификата.
Если у вас wildcard, то все просто, либо через диспетчер IIS все меняете, либо через конфигурационный файл.
Откройте его, здесь хранятся настройки IIS. И можно задать биндинг на разные доменные имена:
<site name="default" id="1" serverAutoStart="false">
<application path="/">
<virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
</application>
<bindings>
<binding protocol="https" bindingInformation="192.168.5.151:443:api.ваш домен.ru" sslFlags="1" />
</bindings>
</site>
<site name="api.pyatilistnik2010.ru" id="2">
<application path="/" applicationPool="api.ваш доме.ru">
<virtualDirectory path="/" physicalPath="C:\api.ваш доме.ru" />
</application>
<bindings>
<binding protocol="https" bindingInformation="*:443:api.ваш доме.ru" sslFlags="1" />
</bindings>
</site>
<site name="new.ваш доме.ru" id="3" serverAutoStart="true">
<application path="/" applicationPool="new.ваш доме.ru">
<virtualDirectory path="/" physicalPath="C:\new.pyatilistnik2010.ru" />
</application>
<bindings>
<binding protocol="https" bindingInformation="192.168.5.159:443:new.ваш доме" sslFlags="1" />
</bindings>
</site>
<siteDefaults>
<logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" />
<traceFailedRequestsLogging directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" />
</siteDefaults>
<applicationDefaults applicationPool="DefaultAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
).
Большое спасибо, что действительно помогли мне 🙂
Добрый день!
Подскажите где копать, настроил всё по инструкции, как включаю https
при попытке попасть на сайт требует логин и пароль.
Подскажите, у вас в адресной строке https? и второй вопрос, посмотрите свои методы авторизации на сайте, в соответствующем разделе
Я действительно благодарен владельцу этого веб-сайта, который поделился этим замечательным опытом здесь