Если вы используете веб-сервер 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
.
![Страница загрузки утилиты WACS](https://ruvds.com/wp-content/uploads/2024/02/1-5-1024x421.png)
Загруженный файл необходимо разархивировать, например, на диск 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
.
![Стартовое меню утилиты WACS - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-6.png)
Затем перейдите в пункт 2: Manual input
.
![Выбор домена - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-7.png)
На следующем шаге в строку Host:
ввести имя своего домена.
![Ввод имени домена - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-8.png)
Подтвердите правильность введённого имени нажатием клавиши Enter
.
![Подтверждение имени домена - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-9.png)
Далее перейдите в пункт 4: Single certificate
.
![Выбор единичного домена - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-10.png)
После чего выберите пункт 1: [http] Save verification files on (network) path
.
![Выбор способа подтверждения владения доменом](https://ruvds.com/wp-content/uploads/2024/02/1-11.png)
В строку Path:
введите путь до директории htdocs
.
![Путь к каталогу htdocs - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-12.png)
От сохранения дефолтного файла web.config
можно отказаться. Для этого используйте символ n
.
![Необходимость копирования дефолтного файла web.config](https://ruvds.com/wp-content/uploads/2024/02/1-13.png)
В следующем меню выберите пункт RSA key
.
![Выбор типа ключа - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-14.png)
Далее необходимо изменить дефолтную настройку утилиты, при помощи которой она привязывает получаемый SSL-сертификат к IIS. Так как на нашем VDS установлен Apache, выберите соответствующий этому веб-серверу пункт, то есть — 2: PEM encoded files (Apache, nginx, etc.)
.
![Выбор веб-сервера Apache - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-15.png)
На следующем шаге введите имя каталога, в который утилита сохранит файл SSL-сертификата.
![Выбор каталога для сохранения файлов ключей](https://ruvds.com/wp-content/uploads/2024/02/1-16.png)
Если вы не планируете использовать пароль на сертификат, выберите пункт 1: None
.
![Отказ от установки пароля на сертификат](https://ruvds.com/wp-content/uploads/2024/02/1-17.png)
То же касается дополнительных опций — если в них нет необходимости, укажите пункт 5: No (additional) store steps
.
![Отказ от дополнительных опций - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-18.png)
В следующем меню выберите пункт 2: Start external script or program
.
![Выбор запуска дополнительного скрипта](https://ruvds.com/wp-content/uploads/2024/02/1-19.png)
Далее в строку File:
введите имя созданного ранее файла для перезапуска службы Apache с полным путём до него.
![Путь к скрипту перезапуска службы веб-сервера](https://ruvds.com/wp-content/uploads/2024/02/1-20.png)
В строку Parameters
введите: {StoreType} {StorePath} {RenewalId}
.
![Указание параметров - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-21.png)
Если в дополнительных установочных опциях необходимости нет, то в следующем меню выберите пункт 3: No (additional) installation steps
.
![Отказ от дополнительных опций - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-22.png)
При желании вы можете изучить текст абонентского соглашения. Чтобы это сделать, используйте символ y
.
![Возможность ознакомления с условиями абонентского соглашения](https://ruvds.com/wp-content/uploads/2024/02/1-23.png)
Как следствие, утилита откроет для просмотра соответствующий документ.
![Текст абонентского соглашения Let’s Encrypt](https://ruvds.com/wp-content/uploads/2024/02/1-24.png)
Чтобы согласиться с его положениями, нажмите y
.
![Согласие с условиями абонентского соглашения Let’s Encrypt](https://ruvds.com/wp-content/uploads/2024/02/1-25.png)
Для обратной связи с вами Let’s Encrypt будет использовать ваш адрес электронный почты, который утилита попросит ввести на следующем шаге.
![Email для обратной связи с Let’s Encrypt](https://ruvds.com/wp-content/uploads/2024/02/1-33.png)
На вопрос о необходимости использования учётных данных пользователя для запуска задачи по обновлению сертификата следует ответить yes
, если вы хотите, чтобы это задание выполнялось в автоматическом режиме.
![Согласие на указание имени пользователя для запуска задачи по обновлению сертификата](https://ruvds.com/wp-content/uploads/2024/02/1-27.png)
Затем введите имя данного пользователя и укажите его пароль.
![Логин и пароль пользователя для запуска задачи по обновлению сертификата](https://ruvds.com/wp-content/uploads/2024/02/1-29.png)
Наконец утилита вернёт вас в своё первоначальное меню, где выберите пункт Q: Quit
для выхода из неё.
![Выход из утилиты WACS - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-30.png)
Дополнительная настройка
Таким образом, в указанном при работе утилиты каталоге вы должны обнаружить файлы ключей. Для нашего домена 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
.
![Задание по обновлению SSL-сертификата в Планировщике заданий](https://ruvds.com/wp-content/uploads/2024/02/1-31.png)
Далее откройте для редактирования файл 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
.
![Перезапуск службы Apache2.4 - Установка бесплатного сертификата Let’s Encrypt на Apache](https://ruvds.com/wp-content/uploads/2024/02/1-32.png)
Таким образом, с этого момента переход на ваш сайт будет устанавливается с применением безопасного протокола HTTPS.