<!-- review: finished -->

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

# ACME

允许使用 [ACME](https://datatracker.ietf.org/doc/html/rfc8555) 协议
为:samp:stream 上下文中定义的服务器自动获取证书。

在:ref:从源代码构建<sourcebuild> 时，
该模块默认不会被构建；必须使用
[构建参数](https://cn.angie.software//angie/docs/installation/sourcebuild.md#configure)
`--with-stream_acme_module`
（同时需要:option:!--with-http_acme_module ）
来启用它。
在来自:ref:我们的仓库<install-packages> 的软件包和镜像中，
该模块已包含在构建中。

#### NOTE
为了正确运行，`stream` 块
必须位于:samp:http 块之后。
这是因为stream模块使用在HTTP配置解析期间
创建的客户端定义。

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

## 配置示例

有关配置示例和设置说明，请参阅
[Stream 模块中的 ACME](https://cn.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://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `acme` name;   |
|--------------------------------------------------------------------------------------|----------------|
| 默认值                                                                                  | —              |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | server         |

对于在所有引用HTTP模块中给定\`name\`的:ref:ACME客户端<acme_client> 的
所有:ref:s_server 块中
通过:ref:s_server_name 指令指定的所有域名，
将获取单个证书；
如果:samp:server_name 配置发生变化，
证书将被更新以适应这些变化。

在每次Angie启动时，会为所有缺少有效证书的域名请求新证书。
可能的原因包括证书过期、
文件丢失或无法读取，
以及证书设置的变更。

#### NOTE
目前，通过正则表达式指定的域名
不受支持，将被跳过。

通配符域名仅在:samp:acme_client 中的
`challenge=dns` 模式下支持。

可以多次指定此指令
以加载不同类型的证书，例如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_<name>`

具有此\`name\`的客户端获取的最后一个证书文件（如果有）的内容。

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

### `$acme_cert_key_<name>`

具有此\`name\`的客户端使用的证书密钥文件的内容。

#### NOTE
证书文件仅在ACME客户端至少获取了一个证书后才可用，
而密钥文件在启动后立即可用。
