<!-- review: finished -->

<a id="stream-acme"></a>

# ACME

Позволяет автоматически получать сертификаты
с использованием протокола [ACME](https://datatracker.ietf.org/doc/html/rfc8555)
для серверов, определенных в контексте `stream`.

При [сборке из исходного кода](https://angie.software//angie/docs/installation/sourcebuild.md#sourcebuild)
модуль не собирается по умолчанию; его необходимо
включить с помощью [параметра сборки](https://angie.software//angie/docs/installation/sourcebuild.md#configure)
`--with-stream_acme_module`
(также требуется `--with-http_acme_module`).
В пакетах и образах из [наших репозиториев](https://angie.software//angie/docs/installation/index.md#install-packages)
модуль включен в сборку.

#### NOTE
Для корректной работы блок `stream`
должен располагаться после блока `http`.
Это связано с тем, что потоковый модуль использует определения клиентов,
созданные при разборе HTTP-конфигурации.

<a id="configuration-example-57"></a>

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

Примеры конфигурации и инструкции по настройке см. в разделе
[ACME в потоковом модуле](https://angie.software//angie/docs/configuration/acme.md#acme-config-stream).

<a id="directives-66"></a>

## Директивы

<a id="index-0"></a>

<a id="s-acme"></a>

### acme

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `acme` имя;   |
|------------------------------------------------------------------------------------------|---------------|
| По умолчанию                                                                             | —             |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | server        |

Для всех доменов, указанных в директивах [server_name](https://angie.software//angie/docs/configuration/modules/stream/index.md#s-server-name)
во всех блоках [server](https://angie.software//angie/docs/configuration/modules/stream/index.md#s-server),
которые ссылаются на [клиент ACME](https://angie.software//angie/docs/configuration/modules/http/http_acme.md#acme-client) из HTTP-модуля с именем имя,
будет получен единый сертификат;
если изменится конфигурация `server_name`,
сертификат будет обновлен для учета изменений.

При каждом запуске Angie для всех доменов,
у которых отсутствует действующий сертификат, запрашиваются новые сертификаты.
Возможные причины включают истечение срока действия сертификатов,
отсутствие файлов или невозможность прочитать их,
а также изменения в настройках сертификатов.

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

Домены со звездочкой поддерживаются только в режиме `challenge=dns`
в `acme_client`.

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

```nginx
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;
}
```

<a id="stream-acme-variables"></a>

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

<a id="v-s-acme-cert-name"></a>

### `$acme_cert_<имя>`

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

<a id="v-s-acme-cert-key-name"></a>

### `$acme_cert_key_<имя>`

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

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