Настройка HTTPS-соединения для сайта на веб-сервере IIS
Попробовал сделать сайт у себя на сервере на платформе Windows Server 2008R2 (веб-сервер Microsoft-IIS). В общем, получилось
Но однажды встал вопрос: перевести сайт с протокола HTTP на защищённый протокол HTTPS. В административной панели моего “битриксового” сайта и на сайте Битрикс Как только доходит до установки сертификата на сервер, у пользователей виндовс-платформы могут возникнуть вопросы, на которые ответов там нет. Попробую прояснить отдельные нюансы на основе личного опыта.
Где взять сертификат
Я воспользовался бесплатным SSL-сертификатом, который предоставляется на 1 год регистратором доменных имен, у которого я зарегистрировал доменное имя сайта. Из личного кабинета на сайте регистратора я сохранил к себе на сервер два файла: 1) сертификат в формате x509 (.PEM) (это запись сертификата в формате certificate.crt) и 2) корневой сертификат (запись в формате certificate_ca.crt). Третий файл – приватный ключ (в виде текстового файла) – мне выслали на мой почтовый ящик. Его также сохранил к себе на сервер с расширением .key (имя произвольное). Для установки сертификата на сервер необходимы именно эти три файла.
Преобразовать сертификаты crt в pfx
Перед установкой сертификата на веб-сервер IIS необходимо эти три файла объединить (конвертировать) в один файл с расширением .pfx, т.к. диспетчер служб IIS поддерживает только этот формат для импорта сертификата на веб-сервер. Для конвертации потребуется утилита OpenSSL.
Её можно скачать amd64-win64openssl-0_9_8g
Распакуйте её к себе на сервер и в папку с данной утилитой скопируйте полученные ранее три файла certificate.crt, certificate_ca.crt и файл с расширением .key. Зажмите SHIFT и щелкните по папке с утилитой правым кликом. В открывшемся контекстном меню, выберите пункт “Открыть окно команд”:
В результате чего откроется командная строка Windows, но уже в нужной папке содержащей утилиту openssl. В открывшемся окне введите следующую команду:
1 |
openssl.exe pkcs12 -export -out namesite.ru.pfx -inkey private.key -in certificat.crt -certfile certificat_ca.crt |
Здесь вместо namesite.ru необходимо подставить доменное имя Вашего сайта, вместо private подставить имя Вашего файла приватного ключа. Вместо certificat и certificat_ca подставить имена Ваших файлов сертификата и корневого сертификата. Например:
1 |
openssl.exe pkcs12 -export -out www.vash-site.ru.pfx -inkey mskey.key -in certificate.crt -certfile certificate_ca.crt |
В этом же окне будет предложено для создаваемого pfx-файла ввести пароль, который потребуется при импортировании pfx-файла на веб-сервер (пароль при вводе не отображается). После ввода пароля и нажатия Enter будет предложено его повторить.
После повтора пароля и нажатия Enter будет создан pfx-файл (pfx сертификат) в папке с утилитой.
Преобразовать сертификаты crt в pfx для старых версий Windows server 2008/2008R2/2012/2012R2
Так же стоит помнить, что в случае IIS на Windows server 2008/2008R2/2012/2012R2 следует генерировать .pfx-файл с дополнительными ключами управления криптографией, иначе сервер такой .pfx-файл не примет и будет ругаться на ошибки, создавая ложное ощущение, что введён неверный пароль.
1 |
openssl.exe pkcs12 -export -out namesite.ru.pfx -inkey private.key -in certificat.crt -certfile certificat_ca.pem -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac |
Установить полученный pfx сертификат на веб-сервер IIS
В Диспетчере служб IIS открыть начальную страницу Вашего сервера (не сайта), кликнуть по иконке “Сертификаты сервера”. В меню “Действия” выбрать “Импортировать”. В окне “Импорт сертификата” указать местонахождение pfx-файла (в папке с утилитой openssl), ввести пароль, который вы указали при создании pfx-файла, нажать ОК.
Сертификат установлен на веб-сервер
Добавить привязку сайта к протоколу HTTPS
В Диспетчере служб IIS открыть начальную страницу Вашего сайта. В меню “Действия” выбрать “Привязки”. В форме “Привязки сайта” нажать “Добавить”. В форме “Добавление привязки сайта” в строке “Тип” выбрать “https”, в строке “ip-адрес” выбрать “Все неназначенные”, в строке “Порт” ввести 443 , в строке “Сертификаты SSL” из выпадающего списка выбрать сертификат, установленный на веб-сервер Нажать ОК .
Так же необходимо в файрволе сервера открыть порт 443.
Установить 301 редирект с HTTP на HTTPS
В корне Вашего сайта в текстовом редакторе открыть файл web.config. В раздел <system.webServer> добавляем подраздел <rewrite> отвечающий за переопределение URL-адресов, и в котором содержится функция перенаправляющая http на https
1 2 3 4 5 6 7 8 9 10 11 |
<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
Существенное дополнение
Не продлил вовремя сертификат. Проделал перечисленные манипуляции, т.е. – скачал, сконвертировал, установил на сервер. Но поисковики по-прежнему не открывали сайт по протоколу https. Только когда в Диспетчере шлюза удаленных рабочих столов в свойствах на вкладке Сертификаты SSL сделал Импорт сертификата, только тогда сайт стал открываться. Также есть еще конвертер SSL digicertutil но его работу не проверял…
так же стоит помнить, что в случае IIS на Windows server 2008/2008R2/2012/2012R2
следует генерировать .pfx-файл с дополнительными ключами управления криптографией, иначе сервер такой .pfx-файл не примет и будет ругаться на ошибки, создавая ложное ощущение, что введён неверный пароль.
openssl.exe pkcs12 -export -out certs-Win8.pfx -inkey private.key -in public.crt -certfile public_ca.pem -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac