使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)

使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)

之前一直使用 acme.sh 自动续签 SSL 证书,但最近发现自动续签似乎失效了。
重新排查脚本、权限和 Cron 任务比较麻烦,索性改为 ZeroSSL 手动续签 90 天免费证书,流程并不复杂,这里记录一下完整步骤,方便以后快速操作。

一、ZeroSSL 免费证书申请流程(90 天)

填写域名

访问 ZeroSSL 官网,输入需要申请证书的域名(支持单域名或多域名)。

图片[1]-使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)-微生之最

选择证书有效期

选择 90 天(免费) 证书。

图片[2]-使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)-微生之最

⚠️ 重点注意
在创建过程中,一定要取消勾选「Pay Yearly」或任何付费选项,否则会引导你进入订阅流程。

一路 Next Step 创建证书

保持默认选项即可,直到验证方式选择页面。

图片[3]-使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)-微生之最

二、使用 DNS 验证域名(推荐方式)

选择 DNS 验证(DNS Validation)

图片[4]-使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)-微生之最

DNS 验证相比 HTTP 验证更稳定,不依赖 Web 服务是否运行,也更适合服务器已有 HTTPS 配置的情况。

在 DNS 中添加解析记录

按照 ZeroSSL 提供的提示,在域名解析中添加对应的 TXT 记录

类型:TXT  
主机记录:_acme-challenge  
记录值:ZeroSSL 提供的字符串  

等待 DNS 生效(通常 1~5 分钟,个别 DNS 服务商可能更久)。

三、下载并处理 Nginx SSL 证书文件

下载 Nginx 证书并合并证书链

验证成功后,选择 Nginx 类型下载证书,解压后通常包含以下文件:

图片[5]-使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)-微生之最
  • certificate.crt
  • ca_bundle.crt
  • private.key

正确做法

ZeroSSL 需要合并证书链,否则浏览器可能提示证书不完整,也就是将ca_bundle.crt的内容复制追加到certificate.crt中:

cat certificate.crt ca_bundle.crt > yubodna.com.crt
  • 合并后生成的新文件作为 ssl_certificate
  • 私钥文件保持不变(.key

四、上传证书并配置 Nginx

上传证书到服务器

推荐目录结构(规范、好维护):

/etc/nginx/ssl/
├── yubodna.com.crt
├── yubodna.com.key

Nginx SSL 配置示例

server {
    listen 443 ssl http2;
    server_name yubodna.com;

    ssl_certificate     /etc/nginx/ssl/yubodna.com.crt;
    ssl_certificate_key /etc/nginx/ssl/yubodna.com.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location / {
        root /home/dist/;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    location /prod-api/ {
        proxy_pass http://localhost:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /profile/ {
        proxy_pass http://localhost:8080/profile/;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

五、重载 Nginx 并验证证书

重载 Nginx

nginx -t
systemctl reload nginx

验证方式

  • 浏览器访问 https://你的域名
  • 点击地址栏 🔒 查看证书签发机构是否为 ZeroSSL
  • 也可使用 SSL Labs 测试

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
嘀哩 抢沙发

请登录后发表评论

    暂无评论内容