Если вы используете веб-сервер 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.
