Skip to content

Nginx 部署

适合有 SSH 和 sudo 权限的 VPS、云服务器或独立服务器。

本页使用 Certbot 自动完成签发和 Nginx 配置。

1. 准备变量

请替换成你的真实信息:

bash
export ACME_SERVER="你的 Server URL"
export EAB_KID="你的 EAB MAC ID"
export EAB_HMAC_KEY="你的 EAB MAC key"
export EMAIL="[email protected]"
export DOMAIN="example.com"
export WWW_DOMAIN="www.example.com"

单域名默认保护根域名和 www

如果你的产品是多域名或通配符,请先阅读 域名类型

2. 安装 Certbot

Ubuntu / Debian:

bash
sudo apt update
sudo apt install -y certbot python3-certbot-nginx

AlmaLinux / Rocky Linux / CentOS:

bash
sudo dnf install -y epel-release || sudo yum install -y epel-release
sudo dnf install -y certbot python3-certbot-nginx || sudo yum install -y certbot python3-certbot-nginx

如果系统包版本太旧,可以改用 Snap:

bash
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -sf /snap/bin/certbot /usr/bin/certbot

3. 自动签发并安装

单域名,默认包含 example.comwww.example.com

bash
sudo certbot --nginx \
  --non-interactive \
  --agree-tos \
  --email "$EMAIL" \
  --server "$ACME_SERVER" \
  --eab-kid "$EAB_KID" \
  --eab-hmac-key "$EAB_HMAC_KEY" \
  --domain "$DOMAIN" \
  --domain "$WWW_DOMAIN" \
  --cert-name "$DOMAIN"

多域名:

bash
sudo certbot --nginx \
  --non-interactive \
  --agree-tos \
  --email "$EMAIL" \
  --server "$ACME_SERVER" \
  --eab-kid "$EAB_KID" \
  --eab-hmac-key "$EAB_HMAC_KEY" \
  --domain example.com \
  --domain www.example.com \
  --domain example.net \
  --domain shop.example.org \
  --cert-name example.com

4. 通配符证书

通配符默认证书范围:

text
example.com
*.example.com

通配符必须使用 DNS 验证,不能用 --nginx 自动 HTTP 验证。

如果你的 DNS 在 Cloudflare,可使用 acme.sh DNS API:

bash
export CF_Token="Cloudflare API Token"
export CF_Account_ID="Cloudflare Account ID"

~/.acme.sh/acme.sh --issue \
  --dns dns_cf \
  -d "$DOMAIN" \
  -d "*.$DOMAIN" \
  --server "$ACME_SERVER"

签发后参考 LiteSpeed 部署Node.js 部署acme.sh --install-cert 方式安装证书,Nginx 只需要配置 ssl_certificatessl_certificate_key

5. 验证

bash
sudo nginx -t
curl -I "https://$DOMAIN"
sudo certbot certificates

浏览器访问:

text
https://example.com

6. 自动续期测试

bash
sudo certbot renew --dry-run

如果测试通过,Certbot 会自动处理后续续期。

12SSL SSL Certificates and AutoSSL.