Skip to content

使用 Nginx ACME 自动申请 SSL 证书

WARNING

如果 Nginx 位于容器中,必需设法保证对应的 HTTP-01 质询请求被传递给容器中的 Nginx HTTP 端口。

1. 检查 Nginx 版本

在官方源中, nginx-acme 要求 Nginx 1.29.0+

bash
nginx -v

如果 Nginx 版本小于 1.29.0,你需要设法更新 Nginx,或搜索其它方法(如使用 Certbotacme.sh

2. 安装 nginx-acme 模块

假设我们使用 Debian。

bash
sudo apt install nginx-module-acme

3. 配置 ACME

假设我们用来申请证书的邮箱是 xxx@xxx.xxxx(请换成你的真实邮箱)。

编辑 /etc/nginx/nginx.conf,在文件开头导入 ngx_http_acme_module:

perl
load_module modules/ngx_http_acme_module.so; 

user nginx;
worker_processes auto;
worker_rlimit_nofile 1024;

继续编辑 http 部分的配置,设置 ACME 服务器和共享缓存。此处假设我们使用 Let's Encrypt:

perl
# ...

http {
    # ...
    acme_issuer letsencrypt { 
        uri https://acme-v02.api.letsencrypt.org/directory; 
        state_path /var/cache/nginx/acme-letsencrypt; 
        accept_terms_of_service; 
    } 
    acme_shared_zone zone=ngx_acme_shared:1M; 
    resolver 1.1.1.1 ipv6=off valid=5s; 
    # 可自行更换 1.1.1.1 为其它可用的 DNS 服务器,如果 Nginx 位于容器中,可以填写容器所在网络的 DNS。
    # ...
}

4. 验证 Nginx 配置并重启 Nginx

bash
sudo nginx -t
sudo systemctl restart nginx