Настройка SSL на IIS для одного или нескольких сайтов

Обновлено 14.11.2017

Настройка 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 и переходите в пункт "Сертификаты сервера"

настройка iis

Далее в поле "Действия" вы нажимаете импортировать.

импорт pfx сертификата IIS

Через обзор, указываете ваш pfx архив.

импорт SSL в IIS

Указываете пароль, в строке "Выбрать хранилище сертификатов" укажите либо "Личный" подойдет для обычного размещение, а вот пункт "Размещение веб-служб" нужен для SNI технологии.

iis ssl настройка

По сути, это и есть сложная установка SSL в iis, как вам такое.

установка ssl iis

Теперь произведем привязку SSL сертификата к нужному сайту. Для начала я проверю свой сайт на протоколе http, как видите все отлично работает.

проверка http сайта iis

Теперь щелкаем по нужному сайту правым кликом и выберем пункт "Изменить привязки", именно там мы и произведем настройку https в  iis.

iis ssl привязки

Как видите ваш сайт по умолчанию, будет работать по протоколу http, нажимаем кнопку добавить.

Добавление https в IIS

Указываем для сайта:

  • Тип https и номер порта, по умолчанию, это порт 443, убедитесь, что он открыт у вас в брандмауэр.
  • В имени узла, пишем полное название сайта.
  • SSL-сертификат > выбираем нужный и сохраняем настройки.

выбор SSL сертификата для https сайта

Проверяем ваш сайт по протоколу HTTPS, если все отлично, то вы увидите закрытый замочек, это значит, что ssl сертификат установлен в IIS правильно.

Проверка https на iis

Настройка нескольких HTTPS сайтов на разных ip

Предположим, что у вас есть два сайта:

  • api.pyatilistnik2010.ru
  • new.pyatilistnik2010.ru

Вам необходимо, чтобы каждый из них имел свой ip привязанный к DNS имени и так же отдельный сертификат, тут все просто. Вы так же поднимаете отдельные сайты, с той лишь разницей, что в поле ip адрес, указываете нужный и в поле имя узла, адрес вашего ресурса, ну и собственно нужный сертификат.

iis windows server 2012

Сохраняем и проверяем, должно все работать, на любой из версий сервера IIS от 7,5 до 9.

настройка второго сертификата

Настройка нескольких HTTPS сайтов на одном ip

Теперь представим себе ситуацию, что у вас один внешний ip адрес, как быть, пробуем повесить все на него. В итоге один из сайтов у вас получит 404 ошибку, кто не в курсе, что это такое, то вам сюда.

404 ошибка в iis

Вся проблема в том, что в IIS по такому сценарию, в веб интерфейсе может работать, только сертификат на домен, формата wildcard *.pyatilistnik.org. Звездочка подразумевает, что вы можете использовать SSL на любой домен третьего уровня. Но не смейте сдаваться, есть два выхода:

  1. Использование технологии SNI (Server Name Indication) в IIS, подходит для всего старше версии 7.5, так, что Windows Server 2008 R2 и ниже в пролете.
  2. Использовать скрипт от Microsoft.

Вот вам пример такого сертификата.

как установить ssl сертификат в iis

Если у вас wildcard, то все просто, либо через диспетчер IIS все меняете, либо через конфигурационный файл.

C:\Windows\System32\inetsrv\config\applicationHost.config

applicationHost.config

Откройте его, здесь хранятся настройки IIS. И можно задать биндинг на разные доменные имена:

<sites>
<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>
Теперь метод, если у вас нет wildcard и только один внешний ip на сервере, подходит для IIS 7.5 и выше. Первое, что нам необходимо сделать, это узнать ID вашего сайта, делается это просто, либо через консоль диспетчер IIS
ID сайта IIS
Либо все в том же файле applicationHost.config
настройка iis 7.5
Далее переходим в папку:
%SYSTEMDRIVE%\Inetpub\AdminScripts
adsutil.vbs set в IIS
Если у вас, например, на IIS 8 и старше в данной папке нет этого файла, то вам необходимо доставить IIS Management Scripts and tools (IIS скрипты и инструменты управления
).
install IIS Management Scripts and tools
В Windows Server 2012 R2 файл adsutil.vbs set у меня появился в папке
C:\Windows\WinSxS\amd64_microsoft-windows-iis-legacyscripts_31bf3856ad364e35_6.3.9600.16384_none_6f04ccf44b2e0531
установка IIS скрипты и инструменты управления
Далее открываем cmd от имени администратора и выполняем такую команду:
cscript.exe adsutil.vbs set /w3svc/ИДСайта/SecureBindings ":443:ИмяСайта"
в моем случае это выглядит вот так
cscript.exe adsutil.vbs set /w3svc/2/SecureBindings ":443:api.ваш сайт.ru"
Если у вас будет ошибка, что файл не найдет, то создайте в папке %SYSTEMDRIVE%\Inetpub\ папку AdminScripts и скопируйте в нее файлы по из того каталога, что я указывал выше или воспользуйтесь поиском файла adsutil.vbs set
ошибка привязки ssl в iis
затем перейдите в командой строке в папку AdminScripts
cd %SYSTEMDRIVE%\Inetpub\AdminScripts
Теперь если при выполнении скрипта вы получаете ошибку компиляции и ваш файл adsutil.vbs это просто кракозябры, то делаем следующее.
Ошибка компиляции Microsoft VBScript
Заходим в добавление ролей и выбираем компонент
инструменты скриптов IIS 6
В результате чего у вас папка cd %SYSTEMDRIVE%\Inetpub\AdminScripts со всем ее содержимым перезапишется. Пробуем снова выполнить команду, на этот раз все прошло успешно.
установка ssl на разные сайты iis на одном ip
Все проверяем теперь в браузере ваши сайты, теперь при одном ip сайты должны отвечать по своим адресам и по протоколу https. Еще у нас остается технология SNI (Server Name Indication), я ее я рассмотрю в отдельной статье, так что щелкайте по ссылке.
Автор - Сёмин Иван

4 Responses to Настройка SSL на IIS для одного или нескольких сайтов

  1. sapar:

    Большое спасибо, что действительно помогли мне 🙂

  2. Михаил:

    Добрый день!

    Подскажите где копать, настроил всё по инструкции, как включаю https
    при попытке попасть на сайт требует логин и пароль.

  3. Иван Семин:

    Подскажите, у вас в адресной строке https? и второй вопрос, посмотрите свои методы авторизации на сайте, в соответствующем разделе

  4. Finn:

    Я действительно благодарен владельцу этого веб-сайта, который поделился этим замечательным опытом здесь

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *