点赞
评论
收藏
分享
举报
NGINX 引入对 ACME 协议的原生支持
发表于2026-02-26 10:47

浏览 1.1k

文章标签

原文作者:Prabhat Dixit - F5 Chief Product Manager
原文链接:NGINX 引入对 ACME 协议的原生支持
转载来源:NGINX 中文社区

NGINX 唯一中文官方社区 ,尽在 nginx.org.cn



我们非常高兴地宣布 NGINX 支持 ACME 协议的预览版本发布。ACME通过引入新的 ngx_http_acme_module 模块,提供了内置指令,可以直接在 NGINX 配置中请求、安装和续订证书。ACME 功能利用我们的 NGINX-Rust SDK,并作为基于 Rust 的动态模块提供,适用于 NGINX Open Source 用户以及使用 NGINX Plus 的企业 NGINX One 客户。

NGINX 对 ACME 协议的原生支持带来了多种好处,简化并增强了整体的 SSL/TLS 证书管理过程。通过NGINX 指令直接配置 ACME,可以大幅减少手动错误,并消除传统上与 SSL/TLS 证书管理相关的大量持续开销。它还减少了对 Certbot 等外部工具的依赖,从而构建出更安全、更精简的工作流程,降低漏洞风险并缩小攻击面。此外,与现有的外部工具可能存在的特定平台限制不同,原生实现具备更强的可移植性和平台独立性,使其成为适应现代、不断发展的网络基础架构中一种多功能且可靠的解决方案。


什么是 ACME?

ACME 协议(Automated Certificate Management Environment,自动证书管理环境)是一种通信协议,主要用于自动化数字安全证书(例如 SSL/TLS 证书)的签发、验证、续期和吊销过程。使客户端能够在无需人工干预的情况下与证书颁发机构(CA)进行交互,从而简化了网站以及其他基于 HTTPS 服务的安全部署。

ACME 协议由互联网安全研究组织(ISRG)在 2015 年底,作为 Let’s Encrypt 项目的一部分推出。用于提供免费的自动化 SSL/TLS 证书的功能。在 ACME 出现之前,获取 TLS 证书往往是一个手动、昂贵且容易出错的过程。ACME 通过提供开源的自动化证书管理流程,彻底改变了这一现状。

ACMEv2 是 ACME 最初协议的一个更新版本。它增加了对新类型挑战的支持,扩展了认证方式,支持通配符证书,同时做了其他改进,以提升灵活性和安全性。


NGINX ACME 工作流程

NGINX 的 ACME 工作流程可分为四个步骤:

  1. 设置 ACME 服务器
  2. 分配共享内存
  3. 配置挑战(Challenges)
  4. 证书签发与续期


设置 ACME 服务器

要启用 ACME 功能,第一步(也是唯一必须的步骤)是指定 ACME 服务器的目录 URL。

还可以提供额外信息,例如在证书相关问题时如何联系客户端,或模块数据的存储位置,如下所示。


acme_issuer letsencrypt { 
    uri         https://acme-v02.api.letsencrypt.org/directory; 
    # contact   admin@example.test; 
    state_path  /var/cache/nginx/acme-letsencrypt; 

    accept_terms_of_service; 
}


分配共享内存

该实现还提供了一个可选指令 acme_shared_zone,用于保存所有已配置证书颁发者的证书、私钥及挑战数据。该共享区的默认大小为 256K,可根据需要进行调整。

acme_shared_zone zone=acme_shared:1M; 


配置挑战(Challenges)


当前预览版本实现支持 HTTP-01 挑战,用于验证客户端的域名所有权。需要在 NGINX 配置中定义监听端口 80,以处理 ACME 的 HTTP-01 挑战:

server { 
    # listener on port 80 is required to process ACME HTTP-01 challenges 
    listen 80; 

    location / { 
        #Serve a basic 404 response while listening for challenges 
        return 404; 
    } 
}

未来将计划支持其他挑战类型,如 TLS-ALPN 和 DNS-01。


证书签发与续期

在NGINX配置的相应 server 块中使用 acme_certificate 指令,可实现 TLS 证书的自动签发与续期。该指令需要指定要动态签发证书的标识符(域名)列表。标识符列表可通过 server_name 指令进行定义。

下面的示例演示了如何使用之前定义的 letsencrypt ACME 证书颁发者,为 “.example.domain” 域名配置 server 块,从而自动签发和续期 SSL 证书。

server { 

    listen 443 ssl; 

    server_name  .example.com; 

    acme_certificate letsencrypt; 

    ssl_certificate       $acme_certificate; 
    ssl_certificate_key   $acme_certificate_key; 
    ssl_certificate_cache max=2; 
}


需要注意的是,并非 server_name 指令接受的所有值都是有效的标识符。初始版本中不支持通配符,也不支持正则表达式。

在该模块中,可使用 $acme_certificate 和 $acme_certificate_key 变量传递关联域名的 SSL 证书及密钥信息。


为什么这一切如此重要?

ACME 协议推动了全球 HTTPS 的快速普及,使安全的网页连接成为默认标准。它通过自动化整个 TLS/SSL 证书的签发、续期和管理过程,实现了证书管理的现代化,减少了人工操作,并降低了与证书生命周期管理相关的成本。在 web 应用之外,随着物联网设备和边缘计算的兴起,ACME 在自动化保护 API、设备和边缘计算基础设施的安全方面,也将扮演越来越重要的角色。

NGINX 对 ACME 的原生支持凸显了该协议在未来网络安全、自动化和可扩展性方面的重要性。可以预见,ACME 将继续作为互联网及其他领域证书自动化的核心支柱。随着安全成为网络标准的基础,我们将持续看到对部署模型和安全需求不断演进的要求,从而推动 ACME 的改进

展望未来,我们将致力于不断完善 ACME 的实现,以满足用户和客户的需求,既服务于他们当前的使用场景,也为他们未来的发展构建相应的能力。


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号 | B 站

已修改于2026-04-22 12:37
本作品系原创
创作不易,留下一份鼓励
NGINX官方账号

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
NGINX官方账号
这家伙很懒还未留下介绍~
336
文章
21
问答
201
粉丝
相关文章
介绍nginx网页配置工具QQ技术交流群1:1106758598QQ技术交流群2:560797506邮箱: cym1102@qq.com官网地址: http://www.nginxwebui.cn码云: https://gitee.com/cym1102/nginxWebUIgithub: https://github.com/cym1102/nginxWebUI功能特点nginxWebUI也可管理多个nginx服务器集群,随时一键切换到对应服务器上进行nginx配置,也可以一键将某台服务器配置同步到其他服务器,方便集群管理.部署此项目后,配置nginx再也不用上网各种搜索配置代码,再也不用手动申请和配置ssl证书,只需要在本项目中进行增删改查就可方便的配置和启动nginx。技术说明本项目是基于springBoot的web系统,数据库使用sqlite,因此服务器上不需要安装任何数据库项目启动时会释放一个.sqlite.db到系统用户文件夹中,注意进行备份本系统通过Let'sencrypt申请证书,使用acme.sh脚本
点赞 6
浏览 26.1k
  前三周学习了陶辉老师的“NGINX基础培训系列课程”,感觉受益良多,在这里想把一些知识点记录一下,和大家分享一下知识点,也方便日后的随手查看,温故知新。  首先,我们了解到了Nginx的版本,Nginx发布版本分为主线版本和稳定版本,区分两个版本也非常简单,主线版本版本号为单数,比如1.19,稳定版本为双数,比如1.18,今天我要说的是稳定版本,这个版本会尽量少的减少Nginx的bug问题,适用于生产环境,这里我不建议使用Nginx和其他软件一样在生产环境中落后一个或多个大版本使用,之前生产环境做过漏扫,发现我们编译自带的Nginx版本为:nginx/1.13.3(查询命令为nginx-V),结果出现了多个漏洞,四个高危和一个中危漏洞:        通过升级Nginx到稳定版最新版本后修复!  其次,是Nginx发行版本的选择,目前比较流行的有:nginx、nginxplus、Tengine、openresty、ope
点赞 1
浏览 19.4k
感谢您参加“NGINX从入门到精通进阶系列培训”!以下为培训的问答、课件和录像,希望您能通过此培训学有所得,祝学习进步!>问与答:- 基础篇+高级篇 - 应用篇+实战篇(New)>课件(PPT):基础篇:-NGINX概要、安装、配置:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-Setup.pdf-NGINX日志、运维:https://interact.f5.com/rs/653-SMC-783/images/cnfeb22-nginxcorecourse-maintenance.pdf高级篇:-NGINX变量、API:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-API.pdf-NGINXSSL、NJS:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-SSL.pdf
点赞 10
浏览 22k