Установка бесплатного 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

См. также

Создаем сценарии обслуживания SQL в Центре Контроля Качества 1С (Центр Администрирования)

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

Данная статья научит вас, как создавать скрипты обслуживания MS SQL для Центра Контроля Качества (ЦКК) или Центра Администрирования (ЦА).

20.03.2024    513    Silenser    0    

3

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4521    dsdred    53    

71

Инструкция по установке Postgres для OLTP приложений и 1С. Часть 1. Базовая конфигурация

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

В Postgres достаточно подробная документация, и, видимо, поэтому при инсталляции Postgres для 1С большинство параметров приходится выставлять самим. Параметров в Postgres много, а составить эффективную комбинацию не так просто. Все упрощается, если рассмотреть профиль нагрузки, например, 1С это прежде всего профиль OLTP нагрузки – так устроены его метаданные (объекты). Если сосредоточиться на оптимизации профиля OLTP, понимание Postgres сразу упростится.

15.02.2024    2332    1CUnlimited    14    

27

Очистка устаревших патчей в конфигурациях на базе БСП

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

В этой короткой заметке хочется рассказать о быстром и удобном способе удаления расширений-патчей как в типовых конфигурациях, так и любых других, использующих БСП.

01.02.2024    1439    Sergey1CSpb    20    

15

Как запустить сервер лицензирования 1С на примере облачной платформы

Администрирование СУБД Россия Бесплатно (free)

Чтобы минимизировать подобные риски, связанные с нештатной работой программных клиентских и серверных лицензий, необходимо централизовать их хранение и выдачу. Это можно сделать, разместив лицензии на отдельной машине — сервере лицензирования. В статье рассказываем, как это сделать.

25.01.2024    1660    doctor_it    15    

17

Обслуживание индексов MS SQL Server: как, когда и, главное, зачем?

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

Казалось бы, базовое знание: «индексы надо обслуживать, чтобы запросы выполнялись быстро». Но обслуживание индексов выполняется долго и может мешать работе пользователей. Кроме того, в последнее время популярны разговоры о том, что индексы можно вообще не обслуживать – насколько это оправданно? Рассмотрим: на что влияет обслуживание индексов, когда надо и когда не надо его выполнять, и если надо – как это сделать так, чтобы никому не помешать?

16.01.2024    5807    Филин    13    

45

Резервное копирование журнала транзакций, наконец-то!

Архивирование (backup) Администрирование СУБД Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    5868    n_mezentsev    15    

24

Дефрагментация индексов MS SQL для платформы 8.3.22

Инструменты администратора БД Администрирование СУБД Абонемент ($m)

Начиная с 8.3.22 фирма "1С" убрала блокировки БД на уровне страниц; если БД расположена в MS SQL, то стала возникать проблема при дефрагментации индексов с использованием команды ALTER INDEX REORGANIZE. Предлагаю модификацию известного скрипта, который позволяет обойти эту проблему.

1 стартмани

15.11.2023    2248    17    baturo    6    

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