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

22.10.23

База данных - Администрирование СУБД

Если Вы используете 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 месяца, потом автоматически обновляется.

 

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 с содержимым:
         net stop "Apache2.4"
         net start "Apache2.4"


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

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

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

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

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

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

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

11.    Указываем путь:  c:\Apache24\htdocs

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

13.    Выбираем «RSA key»

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

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

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

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

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

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

20.    Далее вводим {StoreType} {StorePath} {RenewalId}

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

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

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

23.    Сгенерируются ключи (4 файла) в c:\Apache24\conf
      •    mysite.ru-chain.pem
      •    mysite.ru-chain-only.pem
      •    mysite.ru-crt.pem
      •    mysite.ru-key.pem

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

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

В файле c:\Apache24\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 mysite.ru
ServerAdmin admin@mysite.ru

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

 

25.   Настроим SSL для выданного сертификата, для этого отредактируем файл c:\Apache24\conf\extra\httpd-ssl.conf

  • Заменим

SSLCertificateFile "${SRVROOT}/conf/server.crt"
на
SSLCertificateFile "${SRVROOT}/conf/mysite.ru-chain.pem"

  • Заменим

SSLCertificateKeyFile "${SRVROOT}/conf/server.key"
на
SSLCertificateKeyFile "${SRVROOT}/conf/mysite.ru-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
DocumentRoot "${SRVROOT}/htdocs"
ServerName www.example.com:443
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"

на
# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs"
ServerName mysite.ru:443
ServerAdmin <example@example.com>
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"

26.    Перенаправим http на https

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

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

LoadModule rewrite_module modules/mod_rewrite.so

 

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

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}


 

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

Результат теста от "Qualys SSL Labs" (https://www.ssllabs.com/ssltest/)

SSL Let's Encrypt Apache Windows

См. также

Ошибка "Запись не найдена в менеджере имен базы данных" с катастрофическими последствиями и её лечение

Администрирование СУБД Системный администратор Платформа 1С v8.3 Бесплатно (free)

Ситуация: при обновлении серверной базы данных произошёл сбой и теперь невозможно войти ни в конфигуратор, ни в 1С:Предприятие по причине ошибки, вынесенной в заголовок. Рецепт лечения.

24.05.2024    1179    Kernelbug    6    

18

Куда же деваются файлы из 1С

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

При хранении файлов в томах на диске они иногда исчезают. Разбираемся, почему.

23.05.2024    7735    human_new    18    

54

Установка и примеры использования 1С:Исполнитель на РедОС

Администрирование СУБД Системный администратор Платформа 1С v8.3 Бесплатно (free)

Краткое описание шагов по установке, настройке и применению инструмента 1С:Исполнитель на операционной системе РедОС, а также по борьбе с некоторыми возникающими ошибками.

06.05.2024    689    artemusII    0    

1

Нестандартное решение пересчета итогов

Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Статья для тех, кто столкнулся с необходимостью пересчета итогов для "больших таблиц" и нет возможности поставить на паузу ИБ для проведения работ.

25.04.2024    2485    virustam    32    

12

Идентификация пользователя не выполнена

Администрирование СУБД Системный администратор Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Иногда в конфигурации 1С:Бухгалтерский учет v3.0 возникает ситуация, когда программа всем пользователям выдает предупреждение, что авторизация не выполнена и работа программы будет завершена. Данная инструкция позволяет решить возникшую проблему.

24.04.2024    1025    Yan_Malyakov    0    

3

Устранение ошибки выполнения скрипта "Создать сервис RAGENT" в ЦКК

Администрирование СУБД Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье показано, как устранить ошибку выполнения скрипта "Создать сервис RAGENT" в системах 1С:Центр контроля качества или в 1С:Центр автоматизации. Будет полезна администраторам ЦКК и ЦА, которые только начали знакомство с этими системами.

18.04.2024    480    artemusII    0    

8

Долгая реструктуризация, замеры времени и очистка Ветис. Розница 2.3

HighLoad оптимизация Администрирование СУБД Системный администратор Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Бесплатно (free)

При подготовке к обновлению возникли проблемы на стадии тестирования и исправления базы данных, также при создании файлов РИБ для магазинов.

16.04.2024    542    xKaskadx    4    

2

Установка и получение лицензии на базовую конфигурацию 1С на Mac OS

Администрирование СУБД Системный администратор Платформа 1С v8.3 Бесплатно (free)

Установить купленную базовую конфигурацию 1С и получить лицензию на MAC OS не так просто, как кажется на первый взгляд и как хотелось бы. Официально в системных требованиях на базовую конфигурации 1С пишет всякие виндовсы и пару-тройку линуксов. МакОс там нет. В статье расскажу, как все-таки поставить на Мак базовую конфигурацию 1С.

11.04.2024    588    pahmutov    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Aletar 15.12.21 13:47 Сейчас в теме
А как сработает автопродление? win-acme запустится как служба и через 3 месяца обновит?
3. 4361fmv 65 16.12.21 06:43 Сейчас в теме
(1) Да. По принципу "Сделал и забыл". У меня уже год всё обновляется...
5. 4361fmv 65 16.12.21 10:04 Сейчас в теме
(3) Уточню. Win-acme запускается не как служба, а помещается в планировщик. От туда и стартует.
15. cleaner_it 221 30.01.22 16:42 Сейчас в теме
(5) В планировщике нужно указать wacs.exe? Если да - то с какими параметрами, или вообще без параметров?
16. cleaner_it 221 11.02.22 16:01 Сейчас в теме
(15) После настройки задание уже находится в списке заданий планировщика, с указанием скрипта и параметров запуска. Вопрос снят
Прикрепленные файлы:
2. starik-2005 3050 15.12.21 20:45 Сейчас в теме
Че-то много слишком текста. Я на свой сервак поставил (на убунте, правда, а не на масдае) за минут пять по мануалу из трех строк... Сейчас сертификат сам продлевает себя. В сентябре сам себя продлил:
Прикрепленные файлы:
4. 4361fmv 65 16.12.21 06:44 Сейчас в теме
(2) Попробуйте на винде по мануалу сделать, много интересного узнаете :-)
6. starik-2005 3050 16.12.21 14:35 Сейчас в теме
(4)
на винде
Не вижу вообще никакого смысла в винде + web-сервер. Это порочная связь )))
7. 4361fmv 65 17.12.21 16:09 Сейчас в теме
(6) Может быть это и порочная связь, только я не вижу ничего порочного в этом. Есть фактическое положение вещей (Win server и Apache) и нужно поставить сертификат. Есть задача - есть решение. Остальное лирика :-)))
bolotnikofff; 7OH; cleaner_it; +3 Ответить
8. starik-2005 3050 17.12.21 18:48 Сейчас в теме
(7)
Есть задача - есть решение.
Просто решений здесь куда больше, чем одно. Например, докер-контейнер с уже всем этим: https://github.com/BirgerK/docker-apache-letsencrypt - как один из тысяч примеров.

https://hub.docker.com/r/enoniccloud/apache2-letsencrypt - получше вариант...
9. Sykoku 101 20.12.21 12:28 Сейчас в теме
Просто из любопытства, что мешало:

- установить OpenSSL,

- прописать в C:\Server\bin\Apache24\conf\httpd.conf

LoadModule ssl_module modules/mod_ssl.so

Listen 443
<VirtualHost _default_:443>
DocumentRoot "c:/Server/data/htdocs/"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error-ssl.log"
TransferLog "${SRVROOT}/logs/access-ssl.log"

SSLEngine on

SSLCertificateFile "C:\Server\certs\localhost.crt"
SSLCertificateKeyFile "C:\Server\certs\localhost.key"
</VirtualHost>

и просто раз в 90-то дней запускать батник получения новых сертификатов с заменой этих 2-х файлов с перезапуском апача?
10. 4361fmv 65 23.12.21 12:51 Сейчас в теме
(9) Во первых, нет желания "запускать раз в 90 дней" батник
Во-вторых, с OpenSSL у меня не срослось (сейчас не помню причину), а это заработало.
frkbvfnjh; +1 Ответить
11. 4361fmv 65 23.12.21 12:58 Сейчас в теме
(10) М.б. мне стОит еще раз к этому вернуться...
12. Sykoku 101 23.12.21 16:39 Сейчас в теме
(10) А "cmd-файл" запланировать? У Вас оно также решено.
13. 4361fmv 65 24.12.21 06:48 Сейчас в теме
Да, есть различные варианты решения этой задачи (не тысячи :-) ), это, просто, один из них.
Я использую этот вариант: Apache+winacme.
14. egor_gard 14.01.22 09:37 Сейчас в теме
Полезно. Пригодилось. Спасибо
17. 7OH 69 21.06.22 20:45 Сейчас в теме
А вот не создаются файлы в конце.
Ошибок не выдаёт, но и файлов нету.
Что делать ?
18. 7OH 69 26.06.22 13:51 Сейчас в теме
В общем - удалил настройки в скрипте - начало создавать файлы.
Сервис не запускался - в винде в логах ошибка алиаса, в логах апача - довольно интересное сообщение
"SSLPassPhraseDialog builtin is not supported on Win32"
гугл подсказал - под апачем нельзя шифровать сертификаты паролем.
В статье об этом не указано, возможно скрипт обновили, а я по привычке установил пароль.
В общем - без пароля взлетело - работает.
19. alud 05.09.22 03:02 Сейчас в теме
А что делать, если забыл указать скрипт для автостопа/автостарта Апача? Как его добавить теперь?
20. alud 05.09.22 03:07 Сейчас в теме
А что делать, если забыл указать скрипт для автостопа/автостарта Апача? Как его добавить теперь?
21. 3762515 28.11.22 16:19 Сейчас в теме
У меня не взлетает :((
После всех действий проделанных по этой инструкции, служба апача отказывалась запускаться, ругалась на эти строки:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}


Я закаментил эти строки, ругнулось на: AH00526: Syntax error on line 36 of C:/Apache24/conf/extra/httpd-ssl.conf:
В этом файле в строке 36 было это: Listen 443
Я и это закоментил. Апач запустился, но по https у меня не взлетает, браузер ругается
22. 3762515 28.11.22 17:17 Сейчас в теме
(21) разобрался. в файлике "C:\Apache24\conf\httpd.conf" заменил:
Listen 80
на
Listen 443
И всё заработало. Теперь вопрос, какой батник нужно в планировщик поставить для обновления сертификата?
23. Radogosh 21.08.23 19:11 Сейчас в теме
Прошу автора внести правки.

\SSLCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS
исправить на
SSLCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS

Так же необходимо раскаментить модуль
LoadModule rewrite_module modules/mod_rewrite.so
24. 4361fmv 65 22.10.23 08:27 Сейчас в теме
(23) Внёс
Спасибо за уточнение.
25. пользователь 25.10.23 07:21
Сообщение было скрыто модератором.
...
26. alsion2 186 27.10.23 10:58 Сейчас в теме
Спасибо большое за инструкцию. Всё понятно до пункта 22. Там в числе прочего идёт подтверждение владения доменом. Как оно может пройти? Это вот /.well-known/acme-challenge/ - не может сработать потому что у нас не IIS. Апач не ответит. Пытался руками создать папку, но в винде нельзя точку впереди ставить. Если через DNS записи делать как-то руками, то через три месяца всё по новой. Поясните, пожалуйста.
27. alsion2 186 27.10.23 11:34 Сейчас в теме
(26) Узнал что такое Alias, добавил в конфиг Alias /.well-known "C:/Apache24/htdocs/well-known" . Вроде как без этого никак не должно было работать. Пытаюсь дальше
28. alsion2 186 27.10.23 18:21 Сейчас в теме
(27) У меня взлетело. Только пришлось проделать дополнительные действия: 1. поставить Filezilla server 2. Настроить пользователя с mount points: virtual path=/.well-known, native path=C:\Apache24\htdocs\well-known 3.На шаге 12 выбираю пункт 3 - фтп. Дальше как-то понятно
33. join2us 18 26.02.24 21:34 Сейчас в теме
(26)
но в винде нельзя точку впереди ставить

можно, через CMD
29. yutaro87 31.10.23 11:02 Сейчас в теме
Спасибо. С первого раза заработало)
30. Rafhat 13 28.11.23 06:50 Сейчас в теме
Большое спасибо. Вопрос по 10 пункту. Там стоит выбирать 1 позицию, пока не выбрал 2 не выдавало ошибку,при получении сертификата. Чем они отличаются ?
31. zergey128 8 01.02.24 09:01 Сейчас в теме
У кого вылетает такая ошибка:

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

ее можно исправить установив КриптоПРО и сопутствующие сертификаты через Контур.Диск
https://install.kontur.ru
Прикрепленные файлы:
32. haous 2 21.02.24 10:56 Сейчас в теме
Подскажите на пункте 22 не проходит авторизация. Выдает ошибку 403. Нужно как-то дополнительно настраивать Apache по предоставлению доступа в каталог с сертификатами?
Оставьте свое сообщение