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#

Синтаксис

acme имя;

По умолчанию

Контекст

server

Для всех доменов, указанных в директивах 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 получил хотя бы один сертификат, а вот файл ключа доступен сразу после запуска.