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

07.10.24

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
Работоспособная сборка winacme+apache
.zip 50,58Mb
8
8 Скачать бесплатно

В зависимости от версий acme и Apache могут быть различия. Тестировалось на Windows 2016 Server, Apache 2.4.58-win64 (Apache 2.4.60-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)

Пользовался ранее https://infostart.ru/1c/articles/1120161/#, но она устарела, т.к. службы запускаются через systemctl, да и сами службы слегка изменились. Возможно, где-то на ИТС уже есть нужная инструкция, но мне не попалась.

15.11.2024    302    Baser    2    

1

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

Мы исследуем проблему долгого выполнения запросов PostgreSQL при использовании конструкции VALUES: когда она возникает, как на нее можно повлиять, а главное, почему ее продуманная отработка важна для более быстрого функционирования решений на базе 1С

12.11.2024    831    Tantor    19    

14

HighLoad оптимизация Администрирование СУБД Механизмы платформы 1С Программист Платформа 1С v8.3 ИТ-компания Россия Бесплатно (free)

В данной статье мы рассмотрим, как работает механизм временных таблиц на postgres на платформе 8.3.23 и что изменилось в нем при добавлении новых возможностей в платформе 8.3.25. А также на примере покажу, как понимание работы платформы позволяет оптимизировать СУБД для работы с 1С.

29.10.2024    3148    Tantor    38    

34

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

CDC - очень мощный механизм, который можно использовать во многих сценариях, возможность развернуть его в Docker показывает простоту и лёгкость данной технологии.

08.10.2024    734    AlexSvoykin    1    

7

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

Анализ и решение ошибок СУБД. Во время реиндексации базы Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Не удалось найти объект "ИмяБазы.dbo._RefSInf21806", так как он не существует, или отсутствуют разрешения. Во время проверки целостности Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "dbo._RefSInf21806".

19.09.2024    4350    Xershi    10    

17

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

Бэкап в Postgres состоит из набора граблей, которые нужно обойти для успешного восстановления. Они заложены в самых неожиданных местах от предмета резервного копирования (база или кластер) до структуры каталогов. Один неверный шаг и восстановление будет невозможным. Почему нельзя было сделать проще, как в MS SQL или Oracle? Почему бэкап в Postgres оставляет впечатление чьей-то лабораторной работы? Статья адресована прежде всего специалистам 1С, избалованным комфортом в MS SQL, в суровых буднях импортозамещения на Postgres.

13.08.2024    2972    1CUnlimited    9    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Aletar 15.12.21 13:47 Сейчас в теме
А как сработает автопродление? win-acme запустится как служба и через 3 месяца обновит?
3. 4361fmv 69 16.12.21 06:43 Сейчас в теме
(1) Да. По принципу "Сделал и забыл". У меня уже год всё обновляется...
5. 4361fmv 69 16.12.21 10:04 Сейчас в теме
(3) Уточню. Win-acme запускается не как служба, а помещается в планировщик. От туда и стартует.
15. cleaner_it 209 30.01.22 16:42 Сейчас в теме
(5) В планировщике нужно указать wacs.exe? Если да - то с какими параметрами, или вообще без параметров?
16. cleaner_it 209 11.02.22 16:01 Сейчас в теме
(15) После настройки задание уже находится в списке заданий планировщика, с указанием скрипта и параметров запуска. Вопрос снят
Прикрепленные файлы:
2. starik-2005 3087 15.12.21 20:45 Сейчас в теме
Че-то много слишком текста. Я на свой сервак поставил (на убунте, правда, а не на масдае) за минут пять по мануалу из трех строк... Сейчас сертификат сам продлевает себя. В сентябре сам себя продлил:
Прикрепленные файлы:
4. 4361fmv 69 16.12.21 06:44 Сейчас в теме
(2) Попробуйте на винде по мануалу сделать, много интересного узнаете :-)
6. starik-2005 3087 16.12.21 14:35 Сейчас в теме
(4)
на винде
Не вижу вообще никакого смысла в винде + web-сервер. Это порочная связь )))
7. 4361fmv 69 17.12.21 16:09 Сейчас в теме
(6) Может быть это и порочная связь, только я не вижу ничего порочного в этом. Есть фактическое положение вещей (Win server и Apache) и нужно поставить сертификат. Есть задача - есть решение. Остальное лирика :-)))
bolotnikofff; 7OH; cleaner_it; +3 Ответить
8. starik-2005 3087 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 69 23.12.21 12:51 Сейчас в теме
(9) Во первых, нет желания "запускать раз в 90 дней" батник
Во-вторых, с OpenSSL у меня не срослось (сейчас не помню причину), а это заработало.
frkbvfnjh; +1 Ответить
11. 4361fmv 69 23.12.21 12:58 Сейчас в теме
(10) М.б. мне стОит еще раз к этому вернуться...
12. Sykoku 101 23.12.21 16:39 Сейчас в теме
(10) А "cmd-файл" запланировать? У Вас оно также решено.
13. 4361fmv 69 24.12.21 06:48 Сейчас в теме
Да, есть различные варианты решения этой задачи (не тысячи :-) ), это, просто, один из них.
Я использую этот вариант: Apache+winacme.
14. egor_gard 14.01.22 09:37 Сейчас в теме
Полезно. Пригодилось. Спасибо
17. 7OH 70 21.06.22 20:45 Сейчас в теме
А вот не создаются файлы в конце.
Ошибок не выдаёт, но и файлов нету.
Что делать ?
18. 7OH 70 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 69 22.10.23 08:27 Сейчас в теме
(23) Внёс
Спасибо за уточнение.
25. пользователь 25.10.23 07:21
Сообщение было скрыто модератором.
...
26. alsion2 199 27.10.23 10:58 Сейчас в теме
Спасибо большое за инструкцию. Всё понятно до пункта 22. Там в числе прочего идёт подтверждение владения доменом. Как оно может пройти? Это вот /.well-known/acme-challenge/ - не может сработать потому что у нас не IIS. Апач не ответит. Пытался руками создать папку, но в винде нельзя точку впереди ставить. Если через DNS записи делать как-то руками, то через три месяца всё по новой. Поясните, пожалуйста.
27. alsion2 199 27.10.23 11:34 Сейчас в теме
(26) Узнал что такое Alias, добавил в конфиг Alias /.well-known "C:/Apache24/htdocs/well-known" . Вроде как без этого никак не должно было работать. Пытаюсь дальше
28. alsion2 199 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 по предоставлению доступа в каталог с сертификатами?
34. zergey128 8 25.06.24 14:41 Сейчас в теме
а еще проще получить сертификаты используя командную строку. Батник такого вида:

C:\win-acme\wacs.exe --baseuri "https://acme-v02.api.letsencrypt.org/" --verbose --source manual --host ВАШДОМЕН.РУ --validation filesystem --webroot "C:\Apache2.4\htdocs" --store pemfiles --pemfilespath C:\Apache2.4\conf

net stop "Apache2.4"
net start "Apache2.4"

Пути к установленому апачу пропишите сами правильно.
35. dimka193 08.07.24 12:33 Сейчас в теме
не сработало автообновление через 3 месяца. запуск команды вручную тоже ни чего не дал
C:\win-acme\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
A simple Windows ACMEv2 client (WACS)
Software version 2.2.8.1635 (release, trimmed, standalone, 64-bit)
Connecting to https://acme-v02.api.letsencrypt.org/...
Connection OK!
Scheduled task looks healthy
Please report issues at https://github.com/win-acme/win-acme

Plugin Manual generated source ZZZ.com with 1 identifiers
Plugin Single created 1 order
[HTTP] Request completed with status BadRequest
Error getting renewal information from server
Renewing [Manual] ZZZ.com
Cached order has status invalid, discarding
[ZZZ.com] Authorizing...
[ZZZ.com] Authorizing using http-01 validation (FileSystem)
Answer should now be browsable at http://ZZZ.com/.well-known/acme-challenge/dxce2xbovtxzO5qQzlLeNNvWqeXPAFl3KsF8VRBwF3U
Preliminary validation failed because 'An error occurred while sending the request.'
[ZZZ.com] Authorization result: invalid
[ZZZ.com] {"type":"urn:ietf:params:acme:error:connection","detail":"85.192.20.165: Fetching http://ZZZ.com/.well-known/acme-challenge/dxce2xbovtxzO5qQzlLeNNvWqeXPAFl3KsF8VRBwF3U: Timeout during connect (likely firewall problem)","status":400,"instance":null}
[ZZZ.com] Deactivating pending authorization
Renewal for [Manual] ZZZ.com failed, will retry on next run
Validation failed
No certificate generated
36. dimka193 08.07.24 14:26 Сейчас в теме
багнутая версия win-acme или там чего то обновили
https://github.com/win-acme/win-acme/issues/2582
поставил новую теперь получил ошибку TooManyRequests :(
Оставьте свое сообщение