Заметки сисадмина » Apache: Установка бесплатного SSL сертификата Let’s Encrypt под Windows Server

Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве

Apache: Установка бесплатного SSL сертификата Let’s Encrypt под Windows Server

2024-02-27 · Posted in Apache

\apache-let-encrypt

Если Вы используете web-сервер Apache на операционной системе Windows, то эта краткая инструкция позволит выпустить и установить бесплатный SSL сертификат Let’s Encrypt, настроить автоматический перевыпуск/установку сертификата и перенаправить запросы с http на https.

В зависимости от версий acme и Apache могут быть различия. Тестировалось на Windows 2016 Server, Apache 2.4.58-win64, win-acme 2.2.6.1571.x64. Сертификат “живет” 3 месяца, потом автоматически обновляется.

При выполнении TLS/HTTP проверки ваш сайт должен быть доступен снаружи по полному DNS имени по протоколам HTTP (80/TCP) и HTTPS (443/TCP).

1)Копируем и устанавливаем Apache 2.4 в c:\Apache24 (скачать последние релизы можно от сюда https://www.apachelounge.com/download/)

2)Копируем win-acme в c:\win-acme (скачать можно от сюда https://www.win-acme.com/)

3)Создаем файл C:\win-acme\Scripts\RestartApache.bat с содержимым:

4)Запускаем клиент win-acme let’s encrypt (c:\win-acme\wacs.exe), я запускал через Far от имени администратора

5)Выбираем «М»

6)Выбираем «Manual input» (в нашем случае – 2)

7)Вводим имена хостов (в нашем случае mysite.ru)

8)Просит ввести альтернативное имя – просто жмем Enter

9)Выбираем пункт: 4 – Single certificate

10)Выбираем пункт: 1- [http] Save verification files on (network) path

11)Указываем путь:

12)Спрашивает, хотите ли вы скопировать файл web.config перед проверкой, отвечаем “N”

13)Выбираем 2 – «RSA key»

14)Поскольку будем использовать Apache, то выбираем 2 – «PEM encoded files (Apache, nginx, etc.)»

15)Указываем каталог, куда сохраним .pem файлы:

16)Устанавливать пароль на сертификаты под Apache не нужно

“SSLPassPhraseDialog builtin is not supported on Win32”
под апачем нельзя шифровать сертификаты паролем.

17)Другие варианты нам не нужны, поэтому выбираем 5 – “No (addition) store steps”

18)После создания сертификатов нужно выполнить дополнительный шаг, выбираем пункт 2 – “Start external script or program”

19)Укажем bat-файл (п.4), чтобы автоматически перезапускать сервис Apache после обновления сертификатов:

20)Далее вводим:

21)Больше никаких дополнительных шагов не требуется, выбираем 3 – “No (additional) installation steps”

22)Если ранее вы получали сертификаты на этот адрес (mysite.ru), то потребуется подтвердить свои действия

Надо добавить в конфиг Alias /.well-known “C:/Apache24/htdocs/well-known”

нужно указать логин и пароль пользователя ОС под которым будет запускаться задача в планировщике

23)Сгенерируются ключи (4 файла) в c:\Apache24\conf

в планировщике появится задача по обновлению сертификатов по окончании срока действия (срок действия сертификата – 3 месяца)

24)Донастраиваем сам Apache – включаем SSL

В файле c:\Apache24\conf\httpd.conf расскомментируем следующие строки:

укажем:

После рестарта Apache в списке служб будет подобная картинка

Настроим SSL сертификат для всего сервера:

1)для этого отредактируем файл c:\Apache24\conf\extra\httpd-ssl.conf

заменим:

заменим:

заменим:

заменим:

заменим:

2)Перенаправим http на https

В файле c:\Apache24\conf\httpd.conf

Расcкомментируем модуль:

После последней строки #LoadModule добавим строки:

В итоге мы получаем SSL соединение и в API, и в браузере.

У кого вылетает такая ошибка:


(WinHttpException): Error 12175 calling WINHTTP_CALLBACK_STATUS_REQUEST_ERROR, ‘Произошла ошибка безопасности’.

ее можно исправить установив КриптоПРО и сопутствующие сертификаты через Контур.Диск:
https://install.kontur.ru

Настроим SSL сертификат для виртуального хоста:

При использовании сертификатов для настройки реального веб-сайта, удобнее создать виртуальный хост с примерно следующими настройками:

Для настройки использования SSL на локальном веб-сервере Apache в Windows следуйте инструкции ниже (в моём случае веб-сервер установлен по этой инструкции, если у вас не так, то отредактируйте пути до файлов).

В каталог C:\Apache24\conf переместите туда файлы localhost.key и localhost.crt.

В директории C:\Apache24\conf\ откройте текстовым редактором файл httpd.conf. В самый низ добавьте туда строки:

заменим:

заменим:

заменим:

Обратите внимание, что вам может понадобиться отредактировать следующие директивы

  • DocumentRoot — укажите путь до сайтов на сервере
  • ServerName — укажите имя вашего хоста, если это не localhost

Обратите внимание, что мы не просто поместили эти строки в конфигурационный файл, а заключили их в контейнер VirtualHost. Дело в том, что если этого не сделать, то директива SSLEngine on включит SSL для всего веб-сервера, и даже при попытке открыть сайты на 80 порту, эти подключения будут обрабатываться как HTTPS, что вызовет ошибку «Bad Request. Your browser sent a request that this server could not understand». По этой причине эти настройки помещены в контейнер виртуального хоста. Обратите внимание, что используется ключевое слово _default_ – то есть сюда будут собираться все запросы на 443 порт если они не предназначены для другого хоста, который также настроен. То есть при желании вы можете создать больше виртуальных хостов для работы с HTTPS, при этом вместо _default_ указывайте IP хоста или символ * (звёздочка).

Результат теста от “Qualys SSL Labs:”

https://www.ssllabs.com/ssltest/

Leave a Reply