Если вы используете веб-сервер Apache на виртуальной машине, работающей на Windows Server, то будет не лишним позаботится об обеспечения шифрования данных пользователей при их подключении к веб-серверу. Сделать это можно с использованием бесплатного SSL-сертификата от Let’s Encrypt. Наличие на сайте данного сертификата гарантирует безопасное соединение между сервером и браузером пользователя, которое тем самым обеспечивает конфиденциальность информации и её защиту от перехвата. Преимуществом такого подхода является минимизация уязвимостей сертификатов благодаря автоматическому их перевыпуску.
Выпуск сертификатов осуществляется через автоматизированную среду управления сертификатами Automated Certificate Management Environment (ACME). В свою очередь, утилита WACS (Windows ACME Simple) является одним из наиболее популярных клиентских приложений данной среды для операционной системы Windows. В настоящем руководстве мы рассматриваем WACS в качестве наиболее простого способа получения SSL-сертификата от Let’s Encrypt. Фактически, WACS представляет собой инструмент, который позволяет выпустить сертификат, связать его с веб-сайтом, а также создать задачу для обновления сертификата в автоматическом режиме.
Таким образом, у нас есть виртуальный выделенный сервер с операционной системой Windows Server 2022, на котором работает веб-сервер Apache. Кроме того, для установки на сайт SSL-сертификата ваш сайт должен иметь доменное имя, чья A-запись должна соответствовать IP-адресу VPS. Мы намерены оснастить этот сайт SSL-сертификатом, чтобы обеспечить безопасную передачу данных через протокол HTTPS.
Предварительная настройка
Перед тем, как приступить непосредственно к установке сертификата, необходимо подготовить для этого утилиту WACS. С её помощью мы получим и установим в системе SSL-сертификат, а также создадим задачу по его автоматическому обновлению. Архив утилиты доступен для загрузки на своей странице, перейдя на которую нажмите Download
.

Загруженный файл необходимо разархивировать, например, на диск C:
в директорию win-acme
.
После чего перейдите в каталог Scripts
данной директории и создайте исполняемый файл, который будет перезапускать сервис Apache. Файл должен содержать следующие строки:
net stop "Apache2.4"
net start "Apache2.4"
В нашем примере этот файл будет называться apache-restart.bat
.
Установка SSL-сертификата
Для установки SSL-сертификата на Apache, перейдите в каталог win-acme
и запустите от имени администратора файл wacs.exe
. В начальном меню утилиты выберите пункт Create certificate (full options)
используя символ m
.

Затем перейдите в пункт 2: Manual input
.

На следующем шаге в строку Host:
ввести имя своего домена.

Подтвердите правильность введённого имени нажатием клавиши Enter
.

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

После чего выберите пункт 1: [http] Save verification files on (network) path
.

В строку Path:
введите путь до директории htdocs
.

От сохранения дефолтного файла web.config
можно отказаться. Для этого используйте символ n
.

В следующем меню выберите пункт RSA key
.

Далее необходимо изменить дефолтную настройку утилиты, при помощи которой она привязывает получаемый SSL-сертификат к IIS. Так как на нашем VDS установлен Apache, выберите соответствующий этому веб-серверу пункт, то есть — 2: PEM encoded files (Apache, nginx, etc.)
.

На следующем шаге введите имя каталога, в который утилита сохранит файл SSL-сертификата.

Если вы не планируете использовать пароль на сертификат, выберите пункт 1: None
.

То же касается дополнительных опций — если в них нет необходимости, укажите пункт 5: No (additional) store steps
.

В следующем меню выберите пункт 2: Start external script or program
.

Далее в строку File:
введите имя созданного ранее файла для перезапуска службы Apache с полным путём до него.

В строку Parameters
введите: {StoreType} {StorePath} {RenewalId}
.

Если в дополнительных установочных опциях необходимости нет, то в следующем меню выберите пункт 3: No (additional) installation steps
.

При желании вы можете изучить текст абонентского соглашения. Чтобы это сделать, используйте символ y
.

Как следствие, утилита откроет для просмотра соответствующий документ.

Чтобы согласиться с его положениями, нажмите y
.

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

На вопрос о необходимости использования учётных данных пользователя для запуска задачи по обновлению сертификата следует ответить yes
, если вы хотите, чтобы это задание выполнялось в автоматическом режиме.

Затем введите имя данного пользователя и укажите его пароль.

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

Дополнительная настройка
Таким образом, в указанном при работе утилиты каталоге вы должны обнаружить файлы ключей. Для нашего домена your-domain.host
они выглядят следующим образом:
your-domain.host-chain.pem
your-domain.host-chain-only.pem
your-domain.host-crt.pem
your-domain.host-key.pem
Помимо этого, в планировщике вы найдёте задание, предназначение которого заключается в обновлении полученного SSL-сертификата после окончания срока его действия. Убедиться в этом можно запустив Task Scheduler с использованием комбинации клавиш Win
R
, где необходимо ввести taskschd.msc
.

Далее откройте для редактирования файл httpd.conf
из каталога веб-сервера Apache /conf
и раскомментируйте строки:
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf
Также, необходимо снять комментарий со строки, содержащей параметр ServerName
, и указать в ней в качестве значения параметра имя вашего домена. Например:
ServerName your-domain.host
В свою очередь, параметр ServerAdmin
также должен быть раскомментирован и содержать адрес вашей электронной почты.
ServerAdmin your-post@your-domain.host
Сохраните изменения, внесённые в файл httpd.conf
, и отредактируйте файл httpd-ssl.conf
, находящийся в директории conf\extra\
. В нём необходимо найти строку 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
замените название домена www.example.com
на своё. Кроме того, укажите адрес своей электронной почты вместо admin@example.com
.
В заключении необходимо будет произвести настройку перенаправления запросов на использование безопасного протокола HTTPS. Чтобы это сделать, в файле httpd.conf
из каталога \conf\
раскомментируйте строку
LoadModule rewrite_module modules/mod_rewrite.so
После чего в конец данного раздела, то есть после строк, начинающихся с #LoadModule
, добавьте следующий текст:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
По завершении редактирования файла сохраните его и перезапустите службу Apache2.4
.

Таким образом, с этого момента переход на ваш сайт будет устанавливается с применением безопасного протокола HTTPS.