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

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

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

11.04.2024    310    pahmutov    0    

2

Установка тонкого клиента 1С на Rasbian (Raspberry Pi 5)

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

После приобретения Raspberry Pi 5 решил проверить, есть ли возможность использования устройства для организации тонкого клиента. В результате столкнулся с особенностью установки 1С: Предприятие 8.3.23 на Raspbian, решением которой я хочу поделиться с сообществом.

07.04.2024    563    Bessome    3    

5

Порционный шринк базы

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

Скрипт позволяет высвобождать место в операционную систему, занятое файлом базы MS SQL в итерациях с заданным количеством мегабайт

28.03.2024    1240    Garilia    2    

15

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

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

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

20.03.2024    719    Silenser    0    

5

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

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

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

11.03.2024    5771    dsdred    53    

81

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

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

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

15.02.2024    2514    1CUnlimited    14    

28

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

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

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

01.02.2024    1802    Sergey1CSpb    20    

16

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

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

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

25.01.2024    1915    doctor_it    15    

18
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 3036 15.12.21 20:45 Сейчас в теме
Че-то много слишком текста. Я на свой сервак поставил (на убунте, правда, а не на масдае) за минут пять по мануалу из трех строк... Сейчас сертификат сам продлевает себя. В сентябре сам себя продлил:
Прикрепленные файлы:
4. 4361fmv 64 16.12.21 06:44 Сейчас в теме
(2) Попробуйте на винде по мануалу сделать, много интересного узнаете :-)
6. starik-2005 3036 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 3036 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 181 27.10.23 10:58 Сейчас в теме
Спасибо большое за инструкцию. Всё понятно до пункта 22. Там в числе прочего идёт подтверждение владения доменом. Как оно может пройти? Это вот /.well-known/acme-challenge/ - не может сработать потому что у нас не IIS. Апач не ответит. Пытался руками создать папку, но в винде нельзя точку впереди ставить. Если через DNS записи делать как-то руками, то через три месяца всё по новой. Поясните, пожалуйста.
27. alsion2 181 27.10.23 11:34 Сейчас в теме
(26) Узнал что такое Alias, добавил в конфиг Alias /.well-known "C:/Apache24/htdocs/well-known" . Вроде как без этого никак не должно было работать. Пытаюсь дальше
28. alsion2 181 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 17 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 по предоставлению доступа в каталог с сертификатами?
Оставьте свое сообщение