✅ Плюсы такого подхода следующие:
➕Не нужно поддерживать список доменов в разных местах. Есть конфигурация Angie с настроенными доменами. Для них же и получаем сертификаты.
➕Обновление сертификатов происходит без перезапуска веб сервера. Для небольших веб серверов не очень актуально, а вот если доменов и поддоменов много, то это заметное улучшение процессов.
➕В целом более простая настройка с минимумом лишних компонентов и конфигураций для них.
Все параметры описаны в документации. Я смотрел только туда. Получилось всё с первого раза, но пара вопросов остались. В конце отмечу их. Покажу итоговый пример для двух доменов: mail.zeroxzed.ru и webmail.zeroxzed.ru. Сделал их для статьи по почтовому серверу, которую пока пишу.
Добавляем в раздел http конфигурации Angie:
http {
....
resolver 62.76.76.62 62.76.62.76;
acme_client webmail https://acme-v02.api.letsencrypt.org/directory;
acme_client mail https://acme-v02.api.letsencrypt.org/directory;
....
}62.76.76.62 и 62.76.62.76 - публичные DNS сервера компании MSK-IX. Можете использовать любые другие.
Создаём 2 файла конфигурации виртуальных хостов в директории
/etc/angie/http.d - mail.conf и webmail.conf. Содержание одинаковое, отличается только поддомен и параметр acme:server {
listen 443 ssl;
server_name webmail.zeroxzed.ru;
root /var/www/webmail;
index index.php index.html;
acme webmail;
ssl_certificate $acme_cert_webmail;
ssl_certificate_key $acme_cert_key_webmail;
access_log /var/log/angie/webmail-access.log;
error_log /var/log/angie/webmail-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
server_name webmail.zeroxzed.ru;
return 301 https://$host$request_uri;
}Перезапускаем веб сервер и наблюдаем в логах:
2025/11/27 17:24:28 [notice] 154580#154580: creating implicit client block for "@acme"
2025/11/27 17:24:28 [notice] 154580#154580: no certificate, renewal scheduled now, ACME client: webmail
.......................
2025/11/27 17:24:31 [notice] 154582#154582: ACME account ID: "https://acme-v02.api.letsencrypt.org/acme/acct/2832575756", ACME client: webmail
2025/11/27 17:24:47 [notice] 154582#154582: certificate renewed, next renewal date: Mon Jan 26 16:26:15 2026, ACME client: webmail
И так для обоих доменов. В директории
/var/lib/angie/acme появились две папки mail и webmail, где расположены соответствующие сертификаты.Не видел нигде примеров конфигурации с несколькими доменами, поэтому не понял, можно ли как-то всё красиво оформить через переменные в
ssl_certificate, но с одним acme_client? Или для каждого отдельного домена надо прописывать своего клиента?Второй момент, который остался непонятен. Он актуален, если эти же сертификаты использует кто-то ещё. Не увидел никакой возможности настроить хуки после обновления сертификатов, чтобы уведомить зависящие от них службы. Придётся какие-то костыли городить, типа incron, что нивелирует простоту изначальной настройки.
В общем, для использования только в рамках веб сервера всё просто и удобно. Настроил один раз конфигурацию виртуального хоста и дальше всё автоматически работает, обновляется. Обязательно нужен мониторинг сертификатов, так как если что-то пойдёт не так, то кроме как записей в логах с ошибками, никаких событий не будет.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX
#angie


