手动申请SSL证书

手动申请SSL证书

记录一次用 Certbot + Cloudflare DNS API 申请通配符证书的完整流程。

前置条件

  • 域名托管在 Cloudflare
  • 服务器有 root 权限
  • Cloudflare API Token(需 DNS - Edit 权限)

安装 Certbot 及插件

1
2
sudo apt update
sudo apt install certbot python3-certbot-dns-cloudflare

配置 Cloudflare API 凭证

1
2
sudo mkdir -p /etc/letsencrypt/credentials
sudo nano /etc/letsencrypt/credentials/cloudflare.ini

写入 Token 后加固权限:

1
sudo chmod 600 /etc/letsencrypt/credentials/cloudflare.ini

申请证书

1
2
3
4
5
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/credentials/cloudflare.ini \
-d clovee.qzz.io \
-d *.clovee.qzz.io

按提示输入邮箱、同意条款,等待约 10 秒自动完成 DNS 验证。

成功后证书保存在 /etc/letsencrypt/live/clovee.qzz.io/,包含 fullchain.pemprivkey.pem。下载到了自己电脑本地一份,位置在文档\Oracle Cloud\SSL 证书

配置 Nginx

1
2
3
4
5
6
server {
listen 443 ssl;
server_name clovee.qzz.io *.clovee.qzz.io;
ssl_certificate /etc/letsencrypt/live/clovee.qzz.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/clovee.qzz.io/privkey.pem;
}
1
2
sudo nginx -t
sudo systemctl reload nginx

通过 1Panel 配置证书

如果使用 1Panel 管理网站,可以在面板中直接导入证书。

上传证书:网站 → 证书 → 上传证书,填入私钥(privkey.pem)和证书 PEM(fullchain.pem)。

绑定网站:进入目标网站的 HTTPS 设置,选择刚上传的证书,开启强制 HTTPS。1Panel 会自动更新 Nginx 配置并重载服务。

注意别把 KEY 和 PEM 贴反了。

自动续签

Certbot 会自动创建续期定时任务,证书 90 天有效期。可通过以下命令手动验证:

1
sudo certbot renew --dry-run

注意事项

  • 通配符 *.clovee.qzz.io 只匹配一级子域名,多级子域名需额外处理
  • API Token 必须包含 Zone - DNS - Edit 权限,否则会报 NXDOMAIN
  • 导出证书到其他面板使用时,无法在该面板自动续签,需在源服务器续签后重新导出