ихаил
Сергеевич
8-900-358-28-80


Блог вопиющего в пустыне

Настройка HTTPS-соединения для сайта на веб-сервере IIS

Просмотров :  589  |  Комментариев :  0

Попробовал сделать сайт у себя на сервере на платформе Windows Server 2008R2 (веб-сервер Microsoft-IIS). В общем, получилось

Но однажды встал вопрос: перевести сайт с протокола HTTP на защищённый протокол HTTPS. В административной панели моего "битриксового" сайта и на сайте Битрикс (Учебный курс: Настройка HTTPS-соединения) приводится относительно понятный порядок действий, но как только доходит до установки сертификата на сервер, у пользователей виндовс-платформы могут возникнуть вопросы, на которые ответов там нет. Попробую прояснить отдельные нюансы на основе личного опыта. 

Где взять сертификат

Я воспользовался бесплатным SSL-сертификатом, который предоставляется на 1 год регистратором доменных имен, у которого я зарегистрировал доменное имя сайта. Из личного кабинета на сайте регистратора я сохранил к себе на сервер два файла: 1) сертификат в формате x509 (.PEM) (это запись сертификата в формате certificate.crt) и 2) корневой сертификат (запись в формате certificate_ca.crt). Третий файл - приватный ключ (в виде текстового файла) - мне выслали на мой почтовый ящик. Его также сохранил к себе на сервер с расширением .key (имя произвольное). Для установки сертификата на сервер необходимы именно эти три файла.

Преобразовать сертификаты crt в pfx

Перед установкой сертификата на веб-сервер IIS необходимо эти три файла объединить (конвертировать) в один файл с расширением .pfx, т.к. диспетчер служб IIS поддерживает только этот формат для импорта сертификата на веб-сервер. Для конвертации потребуется утилита OpenSSL. Её можно скачать отсюда. Распакуйте её к себе на сервер и в папку с данной утилитой скопируйте полученные ранее три файла certificate.crt, certificate_ca.crt и файл с расширением .key. Зажмите SHIFT и щелкните по папке с утилитой правым кликом. В открывшемся контекстном меню, выберите пункт "Открыть окно команд":

Открыть окно команд

В результате чего откроется командная строка Windows, но уже в нужной папке содержащей утилиту openssl. В открывшемся окне введите следующую команду:

openssl.exe pkcs12 -export -out namesite.ru.pfx -inkey private.key -in certificat.crt -certfile certificat_ca.crt

Внимание! Здесь вместо namesite.ru необходимо подставить доменное имя Вашего сайта, вместо private подставить имя Вашего файла приватного ключа. Вместо certificat и certificat_ca подставить имена Ваших файлов сертификата и корневого сертификата. Например:

openssl.exe pkcs12 -export -out zakupki-32.ru.pfx -inkey mskey.key -in certificate.crt -certfile certificate_ca.crt

В этом же окне будет предложено для создаваемого pfx-файла ввести пароль, который потребуется при импортировании pfx-файла на веб-сервер (пароль при вводе не отображается). После ввода пароля и нажатия Enter будет предложено его повторить. 

OpenSSL_cmd

После повтора пароля и нажатия Enter будет создан pfx-файл (pfx сертификат) в папке с утилитой.

Установить полученный pfx сертификат  на веб-сервер IIS

В Диспетчере служб IIS открыть начальную страницу Вашего сервера (не сайта), кликнуть по иконке "Сертификаты сервера". В меню "Действия" выбрать "Импортировать". В окне "Импорт сертификата" указать местонахождение pfx-файла (в папке с утилитой openssl), ввести пароль, который вы указали при создании pfx-файла, нажать ОК. 

Сертификаты сервера

Сертификаты сервера. Импорт

Сертификат установлен на веб-сервер

Добавить привязку сайта к протоколу HTTPS

В Диспетчере служб IIS открыть начальную страницу Вашего сайта. В меню "Действия" выбрать "Привязки". В форме "Привязки сайта" нажать "Добавить". В форме "Добавление привязки сайта" в строке "Тип" выбрать "https", в строке "ip-адрес" выбрать "Все неназначенные", в строке "Порт" ввести 443 , в строке "Сертификаты SSL" из выпадающего списка выбрать сертификат, установленный на веб-сервер Нажать ОК .

Добавить привязку к https

Так же необходимо в файрволе сервера открыть порт 443.

Установить 301 редирект с HTTP на HTTPS

В корне Вашего сайта в текстовом редакторе открыть файл web.config. В раздел <system.webServer> добавляем подраздел <rewrite> отвечающий за переопределение URL-адресов, и в котором содержится функция перенаправляющая http на https

<rewrite>
<rules>
<rule name="http_https" enabled="true" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:1} redirectType="Permanent" />
</rule>
</rules>
</rewrite>  

Изменить ссылки, используемые на сайте, с абсолютных на относительные

Необходимо в каждом разделе сайта все абсолютные ссылки поменять на относительные. Т.е. ссылки такого вида как http://ваш_сайт.ru/blog/o-razrabotke-sajta/ заменить на /blog/o-razrabotke-sajta/ т.е. убрать указание на протокол и домен Вашего сайта. В файле robots.txt и всех файлах семейства sitemap.xml, в строках содержащих URL-ы Вашего сайта, исправить протокол с http на https.

Оповестить поисковики об изменениях

Добавить HTTPS-версию сайта в панель для вебмастеров Яндекс Вебмастера и Google Search Console

P.S. Существенное дополнение

Не продлил вовремя сертификат. Проделал перечисленные в разделе Блог\О разработке сайта\Проверка владельца домена при получении Free SSL Certificate для веб-сервера IIS манипуляции, т.е. - скачал, сконвертировал, установил на сервер. Но поисковики по-прежнему не открывали сайт по протоколу https. Только когда в Диспетчере шлюза удаленных рабочих столов в свойствах на вкладке Сертификаты SSL сделал Импорт сертификата, только тогда сайт стал открываться. Вот каким боком Диспетчер шлюза удаленных рабочих столов влияет на работу сайта по протоколу https?


  • Комментарии
Загрузка комментариев...


Возврат к списку