ACME#

Обеспечивает автоматическое получение сертификатов с использованием протокола ACME.

При сборке из исходного кода модуль не собирается по умолчанию; его необходимо включить с помощью параметра сборки --with-http_acme_module. В пакетах и образах из наших репозиториев модуль включен в сборку.

Пример конфигурации#

Примеры конфигурации и инструкции по настройке см. в разделе Настройка ACME.

Директивы#

acme#

Синтаксис

acme имя;

По умолчанию

Контекст

server

Для всех доменов, указанных в директивах server_name во всех блоках server, которые ссылаются на клиент ACME с именем имя, будет получен единый сертификат; если изменится конфигурация server_name, сертификат будет обновлен для учета изменений.

Примечание

Сейчас домены со звездочкой и домены, заданные через регулярные выражения, не поддерживаются и будут пропущены.

Эта директива может быть указана несколько раз для загрузки сертификатов разных типов, например RSA и ECDSA:

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=время] [retry_after_error=off|время] [challenge=dns | http] [account_key=файл];

По умолчанию

Контекст

http

Определяет клиент ACME с глобально уникальным именем. Оно должно быть допустимым для каталога и будет использоваться без учета регистра.

Вторым обязательным параметром является uri каталога ACME. Например, URI каталога Let's Encrypt ACME указан как https://acme-v02.api.letsencrypt.org/directory.

Чтобы директива работала, в том же контексте должен быть настроен resolver.

Примечание

Для тестирования удостоверяющие центры обычно предоставляют отдельные тестовые среды. Например, среда тестирования Let's Encrypthttps://acme-staging-v02.api.letsencrypt.org/directory.

enabled

Включает или отключает клиент; это полезно, например, для временного отключения клиента без его удаления из конфигурации.

По умолчанию: on.

key_type

Тип алгоритма закрытого ключа для сертификата. Допустимые значения: rsa, ecdsa.

По умолчанию: ecdsa.

key_bits

Количество битов в ключе сертификата. По умолчанию: 256 для ecdsa, 2048 для rsa.

email

Необязательный адрес электронной почты для обратной связи; используется при создании учетной записи на сервере CA.

max_cert_size

Задаёт максимальный допустимый размер файла нового сертификата в байтах, чтобы зарезервировать место для нового сертификата в разделяемой памяти; чем больше число доменов, для которых запрашивается сертификат, тем больше требуется места.

Если в момент запуска сертификат уже существует, но его размер превышает значение max_cert_size, значение max_cert_size динамически увеличивается до размера существующего файла сертификата.

Если размер сертификата, полученного при обновлении, превышает max_cert_size, процесс обновления завершится с ошибкой.

По умолчанию: 8192.

renew_before_expiry

Время до истечения срока действия сертификата, когда должно начаться его обновление.

По умолчанию: 30d.

retry_after_error

Время до повторной попытки, если получить сертификат не удалось. Если задано значение off, клиент не будет снова пытаться получить сертификат после ошибки.

По умолчанию: 2h.

challenge

Задает тип верификации для ACME-клиента. Допустимые значения: dns, http.

По умолчанию: http.

account_key

Указывает полный путь к файлу, содержащему ключ в формате PEM. Это удобно, если вы хотите использовать существующий ключ аккаунта вместо автоматической генерации, или если вам нужно использовать один ключ для нескольких ACME-клиентов.

Поддерживаемые типы ключей:

  • RSA-ключи с длиной, кратной 8, в диапазоне от 2048 до 8192 бит.

  • ECDSA-ключи с длиной 256, 384 или 521 бит.

acme_client_path#

Синтаксис

acme_client_path путь;

По умолчанию

Контекст

http

Переопределяет путь к каталогу для хранения сертификатов и ключей, заданному при сборке с помощью параметра сборки --http-acme-client-path.

acme_dns_port#

Синтаксис

acme_dns_port число;

Значение по умолчанию

acme_dns_port 53;

Контекст

http

Указывает порт, который модуль использует для обработки DNS-запросов от ACME-сервера. Номер порта должен быть в диапазоне от 1 до 65535. Чтобы использовать номер порта 1024 или ниже, Angie должен работать с привилегиями суперпользователя.

acme_hook#

Синтаксис

acme_hook имя;

По умолчанию

Контекст

location

Задает location, куда будут проксироваться запросы и данные для внешнего приложения. Имя задает соответствующий ACME-клиент.

Встроенные переменные#

$acme_cert_<имя>#

Содержимое последнего файла сертификата (если он есть), полученного клиентом с этим именем.

$acme_cert_key_<имя>#

Содержимое файла ключа сертификата, используемого клиентом с этим именем.

Важно

Файл сертификата доступен, только если клиент ACME получил хотя бы один сертификат, а вот файл ключа доступен сразу после запуска.

$acme_hook_challenge#

Тип проверки. Возможные значения: dns, http.

$acme_hook_client#

Имя ACME-клиента, инициирующего запрос.

$acme_hook_domain#

Проверяемый домен. Если это wildcard-домен, он будет передан без префикса *..

$acme_hook_keyauth#

Строка авторизации:

  • При DNS-проверке используется как значение TXT-записи, имя которой формируется как _acme-challenge. + $acme_hook_domain + ..

  • При HTTP-проверке эта строка должна использоваться в качестве содержимого ответа, запрашиваемого ACME-сервером.

$acme_hook_name#

Имя хука. Для разных типов проверки оно может иметь разные значения и смысл:

Значение

Смысл при DNS-проверке

Смысл при HTTP-проверке

add (добавление хука)

Необходимо добавить соответствующую TXT-запись в конфигурацию DNS.

Необходимо подготовить ответ на соответствующий HTTP-запрос.

remove (удаление хука)

Можно удалить TXT-запись из конфигурации DNS.

Данный HTTP-запрос более не актуален; можно удалить ранее созданный файл со строкой авторизации.

$acme_hook_token#

Токен для проверки. При HTTP-проверке используется как имя запрашиваемого файла: /.well-known/acme-challenge/ + $acme_hook_token.