ACME#
Обеспечивает автоматическое получение сертификатов с использованием протокола ACME.
При сборке из исходного кода модуль не собирается по умолчанию;
его необходимо включить с помощью параметра сборки
Примеры конфигурации и инструкции по настройке см. в разделе Настройка ACME. Для всех доменов, указанных в директивах server_name
во всех блоках server,
которые ссылаются на клиент ACME с именем имя,
будет получен единый сертификат;
если изменится конфигурация При каждом запуске Angie для всех доменов,
у которых отсутствует действующий сертификат, запрашиваются новые сертификаты.
Возможные причины включают истечение срока действия сертификатов,
отсутствие файлов или невозможность прочитать их,
а также изменения в настройках сертификатов. Примечание Сейчас домены, заданные через регулярные выражения,
не поддерживаются и будут пропускаться. Домены со звездочкой поддерживаются только в режиме Эта директива может быть указана несколько раз
для загрузки сертификатов разных типов, например RSA и ECDSA: По умолчанию — http Определяет клиент ACME с глобально уникальным именем.
Оно должно быть допустимым для каталога,
представляет собой строку с переменными
и будет использоваться без учета регистра. Совет Задаваемое здесь имя клиента идентифицирует его в конфигурации Angie,
позволяя сопоставить между собой директивы Вторым обязательным параметром является uri каталога ACME.
Например, URI каталога Let's Encrypt ACME указан
как
https://acme-v02.api.letsencrypt.org/directory. Примечание Модуль ACME добавляет в контекст client
именованный Чтобы директива работала,
в том же контексте должен быть настроен resolver. Примечание Для тестирования
удостоверяющие центры обычно предоставляют отдельные тестовые среды.
Например, среда тестирования Let's Encrypt
—
https://acme-staging-v02.api.letsencrypt.org/directory. Включает или отключает обновление сертификатов для клиента;
это полезно, например, для временной приостановки
без удаления клиента из конфигурации. По умолчанию: Тип алгоритма закрытого ключа для сертификата.
Допустимые значения: По умолчанию: Количество битов в ключе сертификата.
По умолчанию: 256 для Необязательный адрес электронной почты для обратной связи;
используется при создании учетной записи на сервере CA. Задает максимальный допустимый размер файла нового сертификата в байтах,
чтобы зарезервировать место для нового сертификата в разделяемой памяти;
чем больше число доменов, для которых запрашивается сертификат,
тем больше требуется места. Если в момент запуска сертификат уже существует,
но его размер превышает значение Если размер сертификата, полученного при обновлении,
превышает По умолчанию: Время до истечения срока действия сертификата,
когда должно начаться его обновление. По умолчанию: Указывает, что сертификат следует принудительно обновлять
при каждой загрузке конфигурации. Время до повторной попытки,
если получить сертификат не удалось.
Если задано значение По умолчанию: Задает тип верификации для ACME-клиента.
Допустимые значения: По умолчанию: Указывает полный путь к файлу, содержащему ключ в формате PEM.
Это удобно, если вы хотите использовать существующий ключ аккаунта
вместо автоматической генерации,
или если вам нужно использовать один ключ для нескольких ACME-клиентов. Поддерживаемые типы ключей: RSA-ключи с длиной, кратной 8, в диапазоне от 2048 до 8192 бит. ECDSA-ключи с длиной 256, 384 или 521 бит. При указании параметра Следует учитывать, что ключи для ACME-клиентов создаются в том порядке,
в каком соответствующие клиенты упомянуты в конфигурации
в директивах acme_client, acme или acme_hook.
Поэтому, если один клиент должен использовать ключ,
созданный для другого,
этот другой клиент должен стоять в конфигурации раньше. Кроме того, ключи создаются только для клиентов,
у которых задан параметр Переопределяет путь к каталогу для хранения сертификатов и ключей,
заданному при сборке с помощью параметра сборки
Значение по умолчанию http Указывает порт,
который модуль использует для обработки DNS-запросов от ACME-сервера по UDP.
Номер порта должен быть в диапазоне от 1 до 65535. Также поддерживается указание IP-адреса вместе с опциональным портом.
Могут быть использованы как IPv4-адреса в виде Чтобы использовать номер порта 1024 или ниже,
Angie должен работать с привилегиями суперпользователя. Директива связывает сервер с указанным ACME-клиентом.
Через контекст имя Указывает соответствующий ACME-клиент. uri Строка с переменными;
задает строку запроса для вызова обработчиков. По умолчанию — Например, следующая конфигурация передает значения переменных хука
в приложение FastCGI через строку запроса: Содержимое последнего файла сертификата (если он есть),
полученного клиентом с этим именем. Содержимое файла ключа сертификата,
используемого клиентом с этим именем. Примечание Файл сертификата доступен,
только если клиент ACME получил хотя бы один сертификат,
а вот файл ключа доступен сразу после запуска. Тип проверки. Возможные значения: Имя ACME-клиента, инициирующего запрос. Проверяемый домен.
Если это wildcard-домен, он будет передан без префикса Строка авторизации: При DNS-проверке используется как значение TXT-записи,
имя которой формируется как
При HTTP-проверке эта строка должна использоваться
в качестве содержимого ответа, запрашиваемого ACME-сервером. Имя хука. Для разных типов проверки оно может иметь разные значения и смысл: Значение Смысл при DNS-проверке Смысл при HTTP-проверке Необходимо добавить соответствующую TXT-запись в конфигурацию DNS. Необходимо подготовить ответ на соответствующий HTTP-запрос. Можно удалить TXT-запись из конфигурации DNS. Данный HTTP-запрос более не актуален;
можно удалить ранее созданный файл со строкой авторизации. Токен для проверки.
При HTTP-проверке используется как имя запрашиваемого файла:
--with-http_acme_module.
В пакетах и образах из
наших репозиториев
модуль включен в сборку.Пример конфигурации#
Директивы#
acme#
server_name,
сертификат будет обновлен для учета изменений.challenge=dns
в acme_client.server {
listen 443 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_client#
acme_client имя uri [enabled=on | off] [key_type=тип] [key_bits=число] [email=email] [max_cert_size=число] [renew_before_expiry=время] [renew_on_load] [retry_after_error=off|время] [challenge=dns | http] [account_key=файл];acme_client, acme
и переменные модуля, использующие это имя;
не следует путать его с именем вашего домена или сервера.location @acme,
который можно использовать для настройки запросов к каталогу ACME;
По умолчанию в этом location
задана директива proxy_pass с uri каталога,
к которой можно добавить другие настройки из модуля Proxy.enabledon.key_typersa, ecdsa.ecdsa.key_bitsecdsa, 2048 для rsa.emailmax_cert_sizemax_cert_size,
значение max_cert_size динамически увеличивается
до размера существующего файла сертификата.max_cert_size,
процесс обновления завершится с ошибкой.8192.renew_before_expiry30d.renew_on_loadretry_after_erroroff,
клиент не будет снова пытаться получить сертификат после ошибки.2h.challengedns, http.http.account_keyaccount_key следует убедиться,
что файл ключа действительно существует.
Если файл отсутствует,
Angie попытается создать его по указанному пути.enabled=on.acme_client_path#
--http-acme-client-path.acme_dns_port#
acme_dns_port порт | ip[:порт] | [ip6][:порт];acme_dns_port 53;ip:порт,
так и IPv6-адреса в виде [ip6]:порт:acme_dns_port 8053;
acme_dns_port 127.0.0.1;
acme_dns_port [::1];
acme_hook#
location, где она находится,
производятся вызовы обработчиков (хуков),
реализуемых каким-либо внешним сервисом./.acme_hook example uri=/acme_hook/$acme_hook_name?domain=$acme_hook_domain&key=$acme_hook_keyauth;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_pass ...;
Встроенные переменные#
$acme_cert_<имя>#$acme_cert_key_<имя>#$acme_hook_challenge#dns, http.$acme_hook_client#$acme_hook_domain#*..$acme_hook_keyauth#_acme-challenge. + $acme_hook_domain + ..$acme_hook_name#add (добавление хука)remove (удаление хука)$acme_hook_token#/.well-known/acme-challenge/ + $acme_hook_token.