NGINX 推出原生 ACME 协议支持,简化 SSL/TLS 证书管理
NGINX 官方今日宣布推出 ACME 协议原生支持的预览版,通过新增模块 ngx_http_acme_module
实现直接在 NGINX 配置中请求、安装和续期证书的能力。该功能基于 NGINX-Rust SDK 开发,以 Rust 动态模块形式提供,同时支持 NGINX Open Source 开源用户与 NGINX One 企业用户(包括 NGINX Plus)。
原生 ACME 支持大幅简化了 SSL/TLS 证书管理流程:通过 NGINX 指令直接配置 ACME,减少手动操作错误和长期维护成本;无需依赖 Certbot 等外部工具,进一步缩小攻击面、提升安全性;相比平台特定工具,原生实现具备更强的跨平台兼容性,适配现代动态 Web 基础设施需求。
什么是 ACME 协议?
ACME(Automated Certificate Management Environment,自动化证书管理环境)协议旨在自动化数字安全证书(如 SSL/TLS 证书)的颁发、验证、续期和吊销流程。它允许客户端与证书颁发机构(CA)无需人工干预即可完成交互,极大简化了 HTTPS 网站及服务的安全部署。
ACME 协议由互联网安全研究小组(ISRG)于 2015 年底为“Let’s Encrypt”计划开发,提供免费、自动化的 SSL/TLS 证书。在此之前,TLS 证书获取流程繁琐、成本高且易出错,ACME 通过开源自动化工作流彻底改变了这一现状。
ACMEv2 是协议的升级版,新增支持通配符证书、扩展验证方式、新挑战类型等功能,进一步提升了灵活性与安全性。
NGINX ACME 工作流程
NGINX 原生 ACME 功能的使用流程可分为四步:
- 配置 ACME 服务器
- 分配共享内存
- 配置验证挑战
- 证书颁发与自动续期
1. 配置 ACME 服务器
启用 ACME 功能的第一步(也是唯一必填步骤)是指定 ACME 服务器的目录 URL。此外,还可配置证书相关问题的联系邮箱、模块数据存储路径等信息,示例如下:
acme_issuer letsencrypt {
uri https://acme-v02.api.letsencrypt.org/directory; # ACME 服务器目录 URL
# contact admin@example.test; # 证书相关通知邮箱(可选)
state_path /var/cache/nginx/acme-letsencrypt; # 模块数据存储路径
accept_terms_of_service; # 接受服务条款(必填)
}
2. 分配共享内存
ACME 模块提供可选指令 acme_shared_zone
,用于存储所有证书颁发机构的证书、私钥及验证挑战数据。默认大小为 256K,可根据需求调整:
acme_shared_zone zone=acme_shared:1M; # 分配 1M 共享内存(名称为 acme_shared)
3. 配置验证挑战
当前预览版支持 HTTP-01 验证挑战(用于验证域名所有权),需在配置中监听 80 端口以处理挑战请求:
server {
listen 80; # 必须监听 80 端口以处理 ACME HTTP-01 挑战
location / {
return 404; # 非挑战请求返回 404
}
}
官方表示,未来计划支持 TLS-ALPN-01 和 DNS-01 等其他验证方式。
4. 证书颁发与续期
在目标域名的 server 块中,通过 acme_certificate
指令启用证书自动颁发/续期,需指定证书颁发机构(如前文定义的 letsencrypt
)及域名列表(通过 server_name
指令定义)。证书路径通过模块变量 $acme_certificate
和 $acme_certificate_key
自动注入:
server {
listen 443 ssl;
server_name .example.com; # 需申请证书的域名(支持基础通配符,如 .example.com 匹配 example.com 及子域名)
acme_certificate letsencrypt; # 使用名为 letsencrypt 的 ACME 颁发机构
ssl_certificate $acme_certificate; # 自动生成的证书路径
ssl_certificate_key $acme_certificate_key; # 自动生成的私钥路径
ssl_certificate_cache max=2; # 证书缓存配置
}
注意:当前版本暂不支持 server_name
中的正则表达式及复杂通配符(如 *.example.com
)。
为何值得关注?
随着 HTTPS 成为全球网络标准,ACME 协议已成为证书自动化管理的核心。NGINX 作为全球最流行的 Web 服务器之一,其原生 ACME 支持将进一步推动安全部署的普及:
- 简化运维:无需手动管理证书生命周期,减少人为错误;
- 强化安全:消除外部工具依赖,缩小攻击面,提升部署一致性;
- 适配未来:支持 IoT 设备、边缘计算等新兴场景,为 API 和边缘基础设施的证书自动化奠定基础。
如何开始使用?
- 开源用户:可通过 官方预构建包 获取支持 ACME 模块的 NGINX 版本;
- 企业用户:NGINX One(含 NGINX Plus)客户可获取 F5 官方支持的动态模块;
- 详细配置文档请参考 NGINX 官方文档。
NGINX 团队表示,将持续迭代 ACME 模块功能,根据用户反馈扩展验证方式及证书管理能力。