В нашем справочнике есть пошаговое руководство по запуску 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
.
По окончании загрузки распакуйте полученный архив. В нашем примере мы использовали для этого каталог 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
.
Получение сертификата
Для получения сертификата перейдите в проводнике в директорию win-acme
и там от имени администратора запустите файл wacs.exe
. В стартовом меню нажмите m
.
Далее выберите пункт 2: Manual input
.
Затем наберите имя своего сайта. В нашем примере это — your-domain.host
.
В следующем меню нажмите Enter
.
Далее выберите пункт 4: Single certificate
.
Затем выберите первый пункт 1: [http] Save verification files on (network) path
.
На следующем шаге укажите путь к каталогу htdocs
. В нашем примере это — C:\Apache24\htdocs
.
На вопрос о необходимости копирования файла web.config
перед проверкой ответьте отрицательно, для чего введите n
.
Далее выберите RSA key
, то есть нажмите 2
.
По умолчанию утилита привязывает сертификат к IIS. У нас же установлен веб-сервер Apache, поэтому необходимо указать пункт 2: PEM encoded files (Apache, nginx, etc.)
.
Затем укажите, где будет располагаться директория, в которую утилита сохранит файлы сертификата. В нашем примере это будет C:\Apache24\conf
.
Поскольку устанавливать пароль на сертификат необходимости нет, на этом шаге выберите пункт 1: None
.
Необходимости в других вариантах также нет, поэтому здесь выберите пункт 5: No (additional) store steps
.
Далее выберите пункт 2: Start external script or program
.
На следующем шаге укажите путь к созданному ранее исполняемому файлу автоматического перезапуска Apache. В нашем примере это — C:\win-acme\Scripts\RestartApache.bat
.
Затем введите: {StoreType} {StorePath} {RenewalId}
.
В других дополнительных шагах необходимости нет, здесь выберите пункт 3: No (additional) installation steps
.
Если хотите ознакомиться с текстом абонентского соглашения, нажмите y
.
В результате утилита откроет соглашение для того, чтобы вы смогли его просмотреть.
Если вы согласны с его положениями, нажмите y
.
Далее введите адрес электронной почты, который будет использоваться Let’s Encrypt для обратной связи.
На следующем этапе утилита попросит указать учётные данные пользователя, под именем которого будет запускаться задача по обновлению сертификата. Если вы планируете использовать данный функционал, нажмите y
.
После чего введите имя этого пользователя.
Затем укажите его пароль.
Далее утилита вернётся к стартовому меню, где для выхода из неё выберите пункт Q: Quit
.
Дополнительные настройки
По итогу проделанной работы в директории 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. Для этого в файле 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.