Страница 1 из 4

Автоматические сертификаты от Let’s Encrypt

Добавлено: 11 янв 2022, 19:15
Максим
Инструкция по настройке автоматического управления (получение, проверка, обновление) сертификатами Let’s Encrypt для Apache с помощью md_module.

Что у вас должно уже быть до начала всех действий (необходимый минимум):

1. Реальный зарегистрированный домен.
2. Две CAA записи и одна A запись в настройках DNS домена (site.example.com замените на имя вашего домена и 111.222.333.444 замените на свой IP):
CAA		0 issue  letsencrypt.org		site.example.com
CAA		0 issuewild letsencrypt.org		site.example.com
A		111.222.333.444				site.example.com
3. Доступные извне порты 80 и 443, т.е. ваш файрвол/антивирус должен быть корректно настроен.

Настройка по шагам:

1. В настройках Open Server укажите публичный IP-адрес вашего сервера (Меню - Настройки - Сервер).

2. В настройках Apache необходимо включить md_module и watchdog_module (Меню - Дополнительно - Конфигурация - Apache):
#LoadModule   md_module               modules/mod_md.so
#LoadModule   watchdog_module         modules/mod_watchdog.so
заменяем на
LoadModule   md_module               modules/mod_md.so
LoadModule   watchdog_module         modules/mod_watchdog.so
3. Создайте отдельный конфиг виртуального хоста для вашего домена, где вы хотите настроить Let’s Encrypt. Для этого скопируйте файл userdata\config\Apache_2.4-PHP_7.0-7.1_vhost.conf в корневую папку домена. Часть имени файла, а именно Apache_2.4-PHP_7.0-7.1, замените на ту версию Apache и PHP, что выбрана у вас в настройках Open Server.

4. Запретите доступ к файлам конфигурации в .htaccess, расположенном в корне вашего домена (если .htaccess там нет, то создайте):
<Files "Apache*vhost.conf">
    Require all denied
</Files>
5. Теперь произведём изменения в самом файле конфигурации, который мы скопировали в папку с доменом. Замените всё его содержимое на следующее:
<VirtualHost *:%httpport%>
    DocumentRoot    "%hostdir%"
    ServerName      %host%
    ServerAlias     %host% %aliases%
    ScriptAlias     /cgi-bin/ "%hostdir%/cgi-bin/"

    <Location "/md-status">
        SetHandler md-status
    </Location>

</VirtualHost>

MDCertificateAgreement accepted
MDomain %host%
MDStoreDir "%sprogdir%/userdata/config/cert_files/letsencrypt"

<IfModule ssl_module>
<VirtualHost *:%httpsport%>
    DocumentRoot    "%hostdir%"
    ServerName      %host%
    ServerAlias     %host% %aliases%
    ServerAdmin     acme@%host%
    ScriptAlias     /cgi-bin/ "%hostdir%/cgi-bin/"

    SSLEngine       on
    Protocols       http/1.1 acme-tls/1
    SSLStrictSNIVHostCheck  On
    SSLUseStapling          On
    SetEnvIf User-Agent ".*MSIE [6-9].*" ssl-unclean-shutdown

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions   +StdEnvVars
    </FilesMatch>

    <Directory "%hostdir%/cgi-bin/">
        SSLOptions   +StdEnvVars
    </Directory>
</VirtualHost>
</IfModule>
6. Создайте папку letsencrypt в папке /userdata/config/cert_files, т.е. чтобы получился путь /userdata/config/cert_files/letsencrypt.

7. Сохраните конфиг и запустите сервер. После запуска подождите какое-то время (может занять несколько минут), пока модуль получит все сертификаты для ваших доменов (если вы настроили Let’s Encrypt сразу для нескольких доменов). Если в конфиге хоста указаны алиасы, то они также будут обработаны. В логах по мере получения сертификатов для доменов будут появляться такие строки (вместо site.example.com ваш домен):
[Tue Jan 11 16:10:49.647688 2022] [md:notice] [pid 472:tid 788] AH10059: The Managed Domain site.example.com has been setup and changes will be activated on next (graceful) server restart.
8. Теперь, когда все сертификаты получены, перезапустите сервер для применения полученных сертификатов. На этом всё, за сертификатами далее будет следить (проверять их и обновлять) MD модуль Apache, вам делать ничего не нужно :)

Дополнения к инструкции:

1. Если в .htaccess для вашего домена настроено автоматическое перенаправление всех запросов на HTTPS, то вам предварительно необходимо настроить исключение для HTTP запросов к well-known/acme-challenge:
RewriteRule "^/(?!.well-known/acme-challenge)(.*)" https://site.example.com/$1 [R=301,L]
Эти шаги помогут вам настроить автоматическое управление сертификатами Let’s Encrypt для вашего домена на сервере Apache с использованием md_module.

Re: Автоматические сертификаты от Let’s Encrypt

Добавлено: 11 янв 2022, 19:21
Максим
Если у кого-то что-то не получается или если у вас особый конфиг домена, то пишите, будем корректировать ваш конфиг и дополнять инструкцию.

Re: Автоматические сертификаты от Let’s Encrypt

Добавлено: 07 фев 2022, 01:01
baxdan
Максим писал(а): 11 янв 2022, 19:21 Если у кого-то что-то не получается или если у вас особый конфиг домена, то пишите, будем корректировать ваш конфиг и дополнять инструкцию.
Привет, Максим. всё делаю по инструкции, но сертификаты не получаю. подскажи пожалуйста в чем проблема. вот логи
[Mon Feb 07 02:58:22.910398 2022] [ssl:warn] [pid 460:tid 524] AH10085: Init: SITE.RU:443 will respond with '503 Service Unavailable' for now. There are no SSL certificates configured and no other module contributed any.
[Mon Feb 07 02:58:22.912400 2022] [ssl:error] [pid 460:tid 524] AH02217: ssl_stapling_init_cert: can't retrieve issuer certificate! [subject: CN=Apache Managed Domain Fallback / issuer: CN=Apache Managed Domain Fallback / serial: 200A25D90576E278BF7375B02DF539AFBBB4CD39 / notbefore: Feb  6 21:55:56 2022 GMT / notafter: Feb 20 21:55:56 2022 GMT]
[Mon Feb 07 02:58:22.913400 2022] [ssl:error] [pid 460:tid 524] AH02604: Unable to configure certificate SITE.RU:443:0 for stapling
[Mon Feb 07 02:58:22.914398 2022] [ssl:warn] [pid 460:tid 524] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Mon Feb 07 02:58:22.990399 2022] [md:notice] [pid 460:tid 524] AH10064: md(SITE.RU): previous drive job showed 5 errors, purging STAGING area to reset.
[Mon Feb 07 02:58:23.132398 2022] [ssl:warn] [pid 460:tid 524] AH10085: Init: SITE.RU:443 will respond with '503 Service Unavailable' for now. There are no SSL certificates configured and no other module contributed any.
[Mon Feb 07 02:58:23.133400 2022] [ssl:error] [pid 460:tid 524] AH02217: ssl_stapling_init_cert: can't retrieve issuer certificate! [subject: CN=Apache Managed Domain Fallback / issuer: CN=Apache Managed Domain Fallback / serial: 200A25D90576E278BF7375B02DF539AFBBB4CD39 / notbefore: Feb  6 21:55:56 2022 GMT / notafter: Feb 20 21:55:56 2022 GMT]
[Mon Feb 07 02:58:23.133400 2022] [ssl:error] [pid 460:tid 524] AH02604: Unable to configure certificate SITE.RU:443:0 for stapling
[Mon Feb 07 02:58:23.133400 2022] [ssl:warn] [pid 460:tid 524] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Mon Feb 07 02:58:23.165400 2022] [mpm_winnt:notice] [pid 460:tid 524] AH00455: Apache/2.4.41 (Win64) OpenSSL/1.0.2s configured -- resuming normal operations
[Mon Feb 07 02:58:23.165400 2022] [mpm_winnt:notice] [pid 460:tid 524] AH00456: Apache Lounge VC14 Server built: Aug 12 2019 10:48:01
[Mon Feb 07 02:58:23.165400 2022] [core:notice] [pid 460:tid 524] AH00094: Command line: 'C:\\openserver\\modules\\http\\Apache_2.4-PHP_7.0-7.1\\bin\\httpd.exe -d C:/OpenServer/modules/http/Apache_2.4-PHP_7.0-7.1 -f c:\\openserver\\modules\\http\\Apache_2.4-PHP_7.0-7.1\\conf\\httpd.conf'
[Mon Feb 07 02:58:23.168400 2022] [mpm_winnt:notice] [pid 460:tid 524] AH00418: Parent: Created child process 6964
[Mon Feb 07 02:58:23.985398 2022] [ssl:warn] [pid 6964:tid 532] AH10085: Init: SITE.RU:443 will respond with '503 Service Unavailable' for now. There are no SSL certificates configured and no other module contributed any.
[Mon Feb 07 02:58:23.988399 2022] [ssl:error] [pid 6964:tid 532] AH02217: ssl_stapling_init_cert: can't retrieve issuer certificate! [subject: CN=Apache Managed Domain Fallback / issuer: CN=Apache Managed Domain Fallback / serial: 200A25D90576E278BF7375B02DF539AFBBB4CD39 / notbefore: Feb  6 21:55:56 2022 GMT / notafter: Feb 20 21:55:56 2022 GMT]
[Mon Feb 07 02:58:23.988399 2022] [ssl:error] [pid 6964:tid 532] AH02604: Unable to configure certificate SITE.RU:443:0 for stapling
[Mon Feb 07 02:58:23.988399 2022] [ssl:warn] [pid 6964:tid 532] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Mon Feb 07 02:58:24.181398 2022] [ssl:warn] [pid 6964:tid 532] AH10085: Init: SITE.RU:443 will respond with '503 Service Unavailable' for now. There are no SSL certificates configured and no other module contributed any.
[Mon Feb 07 02:58:24.182400 2022] [ssl:error] [pid 6964:tid 532] AH02217: ssl_stapling_init_cert: can't retrieve issuer certificate! [subject: CN=Apache Managed Domain Fallback / issuer: CN=Apache Managed Domain Fallback / serial: 200A25D90576E278BF7375B02DF539AFBBB4CD39 / notbefore: Feb  6 21:55:56 2022 GMT / notafter: Feb 20 21:55:56 2022 GMT]
[Mon Feb 07 02:58:24.182400 2022] [ssl:error] [pid 6964:tid 532] AH02604: Unable to configure certificate SITE.RU:443:0 for stapling
[Mon Feb 07 02:58:24.183400 2022] [ssl:warn] [pid 6964:tid 532] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Mon Feb 07 02:58:24.219400 2022] [mpm_winnt:notice] [pid 6964:tid 532] AH00354: Child: Starting 128 worker threads.
[Mon Feb 07 02:58:28.671712 2022] [md:warn] [pid 6964:tid 752] (70013)Missing parameter for the specified command line option: acme problem urn:ietf:params:acme:error:rejectedIdentifier: Error creating new order :: Cannot issue for "10.22.0.90": The ACME server can not issue a certificate for an IP address (and 2 more problems. Refer to sub-problems for more information.)
[Mon Feb 07 02:58:28.671712 2022] [md:error] [pid 6964:tid 752] (70013)Missing parameter for the specified command line option: AH10056: processing SITE.RU: Error creating new order :: Cannot issue for "10.22.0.90": The ACME server can not issue a certificate for an IP address (and 2 more problems. Refer to sub-problems for more information.)
[Mon Feb 07 02:58:37.068169 2022] [md:warn] [pid 6964:tid 752] (70013)Missing parameter for the specified command line option: acme problem urn:ietf:params:acme:error:rejectedIdentifier: Error creating new order :: Cannot issue for "10.22.0.90": The ACME server can not issue a certificate for an IP address (and 2 more problems. Refer to sub-problems for more information.)
[Mon Feb 07 02:58:37.069169 2022] [md:error] [pid 6964:tid 752] (70013)Missing parameter for the specified command line option: AH10056: processing SITE.RU: Error creating new order :: Cannot issue for "10.22.0.90": The ACME server can not issue a certificate for an IP address (and 2 more problems. Refer to sub-problems for more information.)
[Mon Feb 07 02:58:50.365548 2022] [md:warn] [pid 6964:tid 752] (70013)Missing parameter for the specified command line option: acme problem urn:ietf:params:acme:error:rejectedIdentifier: Error creating new order :: Cannot issue for "10.22.0.90": The ACME server can not issue a certificate for an IP address (and 2 more problems. Refer to sub-problems for more information.)
[Mon Feb 07 02:58:50.366591 2022] [md:error] [pid 6964:tid 752] (70013)Missing parameter for the specified command line option: AH10056: processing SITE.RU: Error creating new order :: Cannot issue for "10.22.0.90": The ACME server can not issue a certificate for an IP address (and 2 more problems. Refer to sub-problems for more information.)

Re: Автоматические сертификаты от Let’s Encrypt

Добавлено: 07 фев 2022, 07:51
Максим
baxdan писал(а): 07 фев 2022, 01:01 Привет, Максим. всё делаю по инструкции, но сертификаты не получаю. подскажи пожалуйста в чем проблема. вот логи
Нет нет, не всё, совсем не всё. Читайте 10, 20, 30 раз, пока не наступит понимание.

Re: Автоматические сертификаты от Let’s Encrypt

Добавлено: 07 фев 2022, 15:20
baxdan
ткни пожалуйста в место где что не так делаю)
в чем проблема?

Re: Автоматические сертификаты от Let’s Encrypt

Добавлено: 08 мар 2022, 21:43
Максим
baxdan писал(а): 07 фев 2022, 15:20 ткни пожалуйста в место где что не так делаю)
в чем проблема?
Вы пытаетесь получить сертификат для ip адреса, лог читали свой же?
The ACME server can not issue a certificate for an IP address
Я же чётко написал для каких доменов это можно настраивать - Реальный зарегистрированный домен.

Re: Автоматические сертификаты от Let’s Encrypt

Добавлено: 13 мар 2022, 10:37
mod
А под nginx как правильно сделать? Там 2 файла получается, причем разные.

И если у регистратора нет записи CAA, то облом получается?

Re: Автоматические сертификаты от Let’s Encrypt

Добавлено: 04 апр 2022, 18:35
rengen
Хорошо бы для nginx аналогичный гайд.

Re: Автоматические сертификаты от Let’s Encrypt

Добавлено: 20 июл 2022, 19:22
atrostov
Здравствуйте!

Все сделал по инструкции, несколько раз перепроверял, но все равно выдает ошибки:
[Wed Jul 20 19:13:03.868097 2022] [ssl:warn] [pid 9312:tid 524] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Wed Jul 20 19:13:03.981029 2022] [ssl:warn] [pid 9312:tid 524] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Wed Jul 20 19:13:04.004989 2022] [mpm_winnt:notice] [pid 9312:tid 524] AH00455: Apache/2.4.41 (Win64) OpenSSL/1.0.2s configured -- resuming normal operations
[Wed Jul 20 19:13:04.005988 2022] [mpm_winnt:notice] [pid 9312:tid 524] AH00456: Apache Lounge VC14 Server built: Aug 12 2019 10:48:01
[Wed Jul 20 19:13:04.005988 2022] [core:notice] [pid 9312:tid 524] AH00094: Command line: 'C:\\openserver\\modules\\http\\Apache_2.4-PHP_7.0-7.1\\bin\\httpd.exe -d C:/OpenServer/modules/http/Apache_2.4-PHP_7.0-7.1 -f c:\\openserver\\modules\\http\\Apache_2.4-PHP_7.0-7.1\\conf\\httpd.conf'
[Wed Jul 20 19:13:04.006990 2022] [mpm_winnt:notice] [pid 9312:tid 524] AH00418: Parent: Created child process 8932
[Wed Jul 20 19:13:04.469757 2022] [ssl:warn] [pid 8932:tid 540] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Wed Jul 20 19:13:04.606680 2022] [ssl:warn] [pid 8932:tid 540] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Wed Jul 20 19:13:04.634636 2022] [mpm_winnt:notice] [pid 8932:tid 540] AH00354: Child: Starting 128 worker threads.

Re: Автоматические сертификаты от Let’s Encrypt

Добавлено: 28 июл 2022, 00:16
Максим
atrostov писал(а): 20 июл 2022, 19:22 Здравствуйте!

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