Как установить SSL-сертификат Let’s Encrypt на Apache под Windows Server

В нашем справочнике есть пошаговое руководство по запуску Apache на виртуальном выделенном сервере, работающем под управлением Windows Server 2016. Ниже разберём, как можно обеспечить шифрование данных при подключении пользователя к веб-серверу при помощи выпуска и установки бесплатного SSL-сертификат Let’s Encrypt. Установка данного сертификата гарантирует защищённое соединение между браузером пользователя и сервером, тем самым обеспечивая конфиденциальность передаваемой информации и защиту данных от перехвата. Вместе с тем, возможные уязвимости сертификатов минимизированы через их автоматический перевыпуск, что также упрощает поддержку безопасности веб-сервера.

Выпуск сертификатов осуществляется путём обращения к автоматической среде управления сертификатами Automated Certificate Management Environment (ACME). Одной из популярных реализаций клиентского приложения данной среды для Windows является утилита WACS (Windows ACME Simple). Кроме того, мы рассматриваем WACS как наиболее простой способ получения SSL-сертификат от Let’s Encrypt. По сути, WACS представляет собой мастер, с помощью которого можно выпустить сертификат, привязать его к сайту, работающему на веб-сервере, а также создать задачу по автоматическому обновлению сертификата.

Итак, в нашем примере мы имеем виртуальный выделенный сервер с Windows Server 2016, на котором работает веб-сервер Apache. Плюс к этому, у нас есть доменное имя your-domain.host, A-запись которого содержит IP-адрес нашего VPS. Именно этот сайт мы оснастим SSL-сертификатом, в результате чего станет возможна передача данных через безопасный протокол HTTPS.

Подготовительные работы

Сначала загрузите на свой виртуальный сервер архив утилиты WACS при помощи соответствующей ссылки, где на открывшейся странице кликните Download.

Страница загрузки утилиты WACS

По окончании загрузки распакуйте полученный архив. В нашем примере мы использовали для этого каталог win-acme на диске C:. Затем перейдите в данную директорию и в каталоге Scripts создайте исполняемый файл перезапуска Apache RestartApache.bat, содержимое которого будет следующим:

net stop "Apache2.4"
net start "Apache2.4"

Перед тем, как приступить к установке сертификата, запустите Apache как службу, если ранее вы этого не сделали. Для чего откройте командную строку (Win R, где наберите cmd), перейдите в каталог bin директории Apache и запустите следующую команду:

httpd.exe -k install

Затем откройте менеджер служб (Win R, где наберите services.msc) и убедитесь, что служба Apache2.4 запущена. Если это не так, откройте её и нажмите Start.

Запуск службы Apache2.4 - Как установить SSL-сертификат Lets Encrypt на Apache

Получение сертификата

Для получения сертификата перейдите в проводнике в директорию win-acme и там от имени администратора запустите файл wacs.exe. В стартовом меню нажмите m.

Стартовое меню утилиты WACS - Как установить SSL-сертификат Lets Encrypt на Apache

Далее выберите пункт 2: Manual input.

Ввод пункта 2: Manual input - Как установить SSL-сертификат Lets Encrypt на Apache

Затем наберите имя своего сайта. В нашем примере это — your-domain.host.

Ввод имени сайта - Как установить SSL-сертификат Lets Encrypt на Apache

В следующем меню нажмите Enter.

Нажмите Enter - Как установить SSL-сертификат Lets Encrypt на Apache

Далее выберите пункт 4: Single certificate.

Выбор пункта 4: Single certificate - Как установить SSL-сертификат Lets Encrypt на Apache

Затем выберите первый пункт 1: [http] Save verification files on (network) path.

Выбор пункта 1: [http] Save verification files on (network) path

На следующем шаге укажите путь к каталогу htdocs. В нашем примере это — C:\Apache24\htdocs.

Ввод C:\Apache24\htdocs

На вопрос о необходимости копирования файла web.config перед проверкой ответьте отрицательно, для чего введите n.

Отказ от копирования файла web.config

Далее выберите RSA key, то есть нажмите 2.

Выбор пункта 2: RSA key

По умолчанию утилита привязывает сертификат к IIS. У нас же установлен веб-сервер Apache, поэтому необходимо указать пункт 2: PEM encoded files (Apache, nginx, etc.).

Выбор пункта 2: PEM encoded files (Apache, nginx, etc.)

Затем укажите, где будет располагаться директория, в которую утилита сохранит файлы сертификата. В нашем примере это будет C:\Apache24\conf.

Ввод C:\Apache24\conf

Поскольку устанавливать пароль на сертификат необходимости нет, на этом шаге выберите пункт 1: None.

Выбор пункта 1: None

Необходимости в других вариантах также нет, поэтому здесь выберите пункт 5: No (additional) store steps.

Выбор пункта 5: No (additional) store steps

Далее выберите пункт 2: Start external script or program.

Выбор пункта 2: Start external script or program

На следующем шаге укажите путь к созданному ранее исполняемому файлу автоматического перезапуска Apache. В нашем примере это — C:\win-acme\Scripts\RestartApache.bat.

Ввод C:\win-acme\Scripts\RestartApache.bat

Затем введите: {StoreType} {StorePath} {RenewalId}.

Ввод {StoreType} {StorePath} {RenewalId}

В других дополнительных шагах необходимости нет, здесь выберите пункт 3: No (additional) installation steps.

Выбор пункта 3: No (additional) installation steps

Если хотите ознакомиться с текстом абонентского соглашения, нажмите y.

Согласие на ознакомление с текстом абонентского соглашения

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

Абонентское соглашение Let's Encrypt

Если вы согласны с его положениями, нажмите y.

Согласие с положениями абонентского соглашения

Далее введите адрес электронной почты, который будет использоваться Let’s Encrypt для обратной связи.

Ввод адреса электронной почты

На следующем этапе утилита попросит указать учётные данные пользователя, под именем которого будет запускаться задача по обновлению сертификата. Если вы планируете использовать данный функционал, нажмите y.

Согласие на использование учётной записи для запуска задания по обновлению сертификата

После чего введите имя этого пользователя.

Ввод имени пользователя

Затем укажите его пароль.

Ввод пароля пользователя - Как установить SSL-сертификат Lets Encrypt на Apache

Далее утилита вернётся к стартовому меню, где для выхода из неё выберите пункт Q: Quit.

Выход из утилиты WACS - Как установить SSL-сертификат Lets Encrypt на Apache

Дополнительные настройки

По итогу проделанной работы в директории conf вы сможете найти файлы ключей. В нашем примере это:

your-domain.host-chain.pem

your-domain.host-chain-only.pem

your-domain.host-crt.pem

your-domain.host-key.pem

Также планировщик должен содержать задачу по обновлению сертификатов после завершения срока их действия. Для запуска планировщика на виртуальном сервере нажмите Win R и наберите taskschd.msc.

Планировщик заданий - Как установить SSL-сертификат Lets Encrypt на Apache

Теперь необходимо произвести дополнительные настройки веб-сервера для включения протокола SSL. Для этого в файле conf/httpd.conf снимите комментарии в следующих строках:

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf

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

ServerName your-domain.host

Также найдите параметр ServerAdmin и укажите там адрес электронной почты. Например:

ServerAdmin mail@your-domain.host

После внесения изменений в файл httpd.conf сохраните его.

Далее нужно будет настроить SSL для полученного сертификата. Для чего отредактируйте файл conf\extra\httpd-ssl.conf из каталога веб-сервера. Здесь найдите строку

SSLCertificateFile "${SRVROOT}/conf/server.crt"

и замените её на

SSLCertificateFile "${SRVROOT}/conf/your-domain.host-chain.pem"

где вместо названия файла your-domain.host-chain.pem укажите название аналогичного на вашем веб-сервере.

Затем найдите строку

SSLCertificateKeyFile "${SRVROOT}/conf/server.key"

и замените её на

SSLCertificateKeyFile "${SRVROOT}/conf/your-domain.host-key.pem"

где также вместо your-domain.host-key.pem необходимо использовать имя своего соответствующего файла.

Далее найдите текст

SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES

и замените его на следующий

SSLCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS
SSLProxyCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS

После чего найдите строки

SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3

и замените следующими строками

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1

И наконец, найдите раздел General setup for the virtual host

# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs"
ServerName www.example.com:443
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"

где вместо www.example.com укажите имя своего сайта, а вместо admin@example.com — адрес своей электронной почты. В нашем примере данный раздел будет выглядеть следующим образом:

# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs"
ServerName your-domain.host:443
ServerAdmin <mail@your-domain.host>
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"

И наконец, нам осталось лишь перенаправить запросы с HTTP на HTTPS. Для этого снова откройте для редактирования файл конфигурации Apache, которым в нашем примере является C:\Apache24\conf\httpd.conf, и снимите комментарий со следующей строки:

LoadModule rewrite_module modules/mod_rewrite.so

Затем после последней строки, начинающейся с #LoadModule, добавьте такой абзац:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

После внесённых изменений сохраните файл и перезапустите службу Apache2.4.

В результате при переходе на ваш сайт с ним будет установлено безопасное соединение при помощи протокола HTTPS.

Безопасное соединение с сайтом - Как установить SSL-сертификат Lets Encrypt на Apache

Вам также может понравиться