ACME#
Позволяет автоматически получать сертификаты
с использованием протокола ACME
для серверов, определенных в контексте stream.
Примечание
Для корректной работы блок stream
должен располагаться после блока http.
Это связано с тем, что потоковый модуль использует определения клиентов,
созданные при разборе HTTP-конфигурации.
Пример конфигурации#
В этом примере сертификаты, полученные ACME-клиентом example
(объявленным в блоке http), защищают TCP-сервер;
по умолчанию используется HTTP-проверка:
# HTTP-часть
http {
resolver 127.0.0.53;
# ACME-клиент для потоковой части
acme_client example https://acme-v02.api.letsencrypt.org/directory;
# Сервер для HTTP-проверки
server {
listen 80;
return 444;
}
}
# Потоковая часть
stream {
server {
listen 12345 ssl;
proxy_pass backend_upstream;
ssl_certificate $acme_cert_example;
ssl_certificate_key $acme_cert_key_example;
server_name example.com www.example.com;
acme example; # ссылка на ACME-клиент, определенный в HTTP-части
}
upstream backend_upstream {
server 127.0.0.1:54321;
}
}
Примеры конфигурации и инструкции по настройке, в том числе для DNS-проверки, см. в разделе ACME в потоковом модуле.
Директивы#
acme#
Для всех доменов, указанных в директивах server_name
во всех блоках server,
которые ссылаются на клиент ACME из HTTP-модуля с именем имя,
будет получен единый сертификат;
если изменится конфигурация server_name,
сертификат будет обновлен для учета изменений.
При каждом запуске Angie для всех доменов, у которых отсутствует действующий сертификат, запрашиваются новые сертификаты. Возможные причины включают истечение срока действия сертификатов, отсутствие файлов или невозможность прочитать их, а также изменения в настройках сертификатов.
Примечание
Сейчас домены, заданные через регулярные выражения, не поддерживаются и будут пропускаться.
Домены со звездочкой поддерживаются только в режиме challenge=dns
в acme_client.
Эта директива может быть указана несколько раз для загрузки сертификатов разных типов, например RSA и ECDSA:
server {
listen 12345 ssl;
server_name example.com www.example.com;
ssl_certificate $acme_cert_rsa;
ssl_certificate_key $acme_cert_key_rsa;
ssl_certificate $acme_cert_ecdsa;
ssl_certificate_key $acme_cert_key_ecdsa;
acme rsa;
acme ecdsa;
}
Встроенные переменные#
$acme_cert_<имя>#
Содержимое последнего файла сертификата (если он есть), полученного клиентом с этим именем.
$acme_cert_key_<имя>#
Содержимое файла ключа сертификата, используемого клиентом с этим именем.
Примечание
Файл сертификата доступен, только если клиент ACME получил хотя бы один сертификат, а вот файл ключа доступен сразу после запуска.