之前一直使用 acme.sh 自动续签 SSL 证书,但最近发现自动续签似乎失效了。
重新排查脚本、权限和 Cron 任务比较麻烦,索性改为 ZeroSSL 手动续签 90 天免费证书,流程并不复杂,这里记录一下完整步骤,方便以后快速操作。
一、ZeroSSL 免费证书申请流程(90 天)
填写域名
访问 ZeroSSL 官网,输入需要申请证书的域名(支持单域名或多域名)。
![图片[1]-使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)-微生之最](https://cos.swszz.cn/2026/02/20260206211926554-1024x802.webp)
选择证书有效期
选择 90 天(免费) 证书。
![图片[2]-使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)-微生之最](https://cos.swszz.cn/2026/02/20260206212010345-1024x698.webp)
⚠️ 重点注意:
在创建过程中,一定要取消勾选「Pay Yearly」或任何付费选项,否则会引导你进入订阅流程。
一路 Next Step 创建证书
保持默认选项即可,直到验证方式选择页面。
![图片[3]-使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)-微生之最](https://cos.swszz.cn/2026/02/20260206212039478.png)
二、使用 DNS 验证域名(推荐方式)
选择 DNS 验证(DNS Validation)
![图片[4]-使用 ZeroSSL 免费 SSL 证书手动部署到 Nginx(90 天证书 + DNS 验证完整教程)-微生之最](https://cos.swszz.cn/2026/02/20260206212356223.webp)
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 验证完整教程)-微生之最](https://cos.swszz.cn/2026/02/20260206212453796-1024x769.webp)
certificate.crtca_bundle.crtprivate.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

















暂无评论内容