Nginx SSL 证书更新流程
Nginx SSL 证书更新流程
Nginx SSL 证书更新流程(腾讯云免费证书)
适用场景:carreyda.com / www.carreyda.com,证书部署在服务器 Nginx 上,证书过期后手动更换。
基本信息
| 项目 | 内容 |
|---|---|
| 服务器 | ubuntu@101.43.10.28(腾讯云轻量服务器) |
| 本地证书目录 | C:\Users\25776\Desktop\carreyda.com_nginx |
| 服务器证书目录 | /etc/nginx/ssl/carreyda.com/ |
| Nginx 中引用的文件 | carreyda.com_bundle.crt、carreyda.com.key |
| 证书有效期 | 约 90 天(本次:2026-09-19 ~ 2026-12-18) |
流程概览
flowchart TD
A[证书过期] --> B[腾讯云控制台下载 Nginx 证书]
B --> C[scp 上传到服务器 /tmp]
C --> D[sudo cp 覆盖旧证书]
D --> E{md5 是否一致?}
E -- 否 --> B
E -- 是 --> F[nginx -t 检查配置]
F --> G[systemctl reload nginx]
G --> H[验证新证书]
1. 下载证书
腾讯云控制台 → SSL 证书 → 我的证书 → 对应证书点"下载" → 选择 Nginx 类型。

解压后得到:
carreyda.com_bundle.crt(资源管理器里隐藏了扩展名,显示为"安全证书")carreyda.com_bundle.pem(内容与 crt 相同,不用)carreyda.com.key(私钥)carreyda.com.csr(不用)

2. 上传到服务器(本地 PowerShell)
在证书所在文件夹的地址栏输入 powershell 回车,直接在当前目录打开。
scp "carreyda.com_bundle.crt" "carreyda.com.key" ubuntu@101.43.10.28:/tmp/

注意:
- 命令里的
<服务器IP>是占位符,替换时连尖括号一起去掉。 - 首次连接提示
Are you sure you want to continue connecting输入yes。 - 密码输入时不显示字符;输错会提示
Permission denied, please try again,重输即可。 - 两个文件都显示
100%即上传成功。
3. 服务器上替换证书
登录服务器(腾讯云控制台"登录",或 ssh ubuntu@101.43.10.28)。

/etc/nginx/ssl/ 只有 root 能进入,所以 cd 会报 Permission denied。不要 cd,全部用 sudo + 绝对路径。
# 确认文件已到位
ls -l /tmp/carreyda.com_bundle.crt /tmp/carreyda.com.key
# (可选)备份旧证书。旧证书已过期,备份意义不大,可跳过
sudo cp /etc/nginx/ssl/carreyda.com/carreyda.com_bundle.crt /etc/nginx/ssl/carreyda.com/carreyda.com_bundle.crt.bak
sudo cp /etc/nginx/ssl/carreyda.com/carreyda.com.key /etc/nginx/ssl/carreyda.com/carreyda.com.key.bak
# 覆盖
sudo cp /tmp/carreyda.com_bundle.crt /etc/nginx/ssl/carreyda.com/carreyda.com_bundle.crt
sudo cp /tmp/carreyda.com.key /etc/nginx/ssl/carreyda.com/carreyda.com.key
sudo chmod 600 /etc/nginx/ssl/carreyda.com/carreyda.com.key
4. 校验证书与私钥是否匹配

sudo openssl x509 -noout -modulus -in /etc/nginx/ssl/carreyda.com/carreyda.com_bundle.crt | openssl md5
sudo openssl rsa -noout -modulus -in /etc/nginx/ssl/carreyda.com/carreyda.com.key | openssl md5
两行 md5 必须一致,否则说明 key 与证书不是一对,Nginx 会启动失败,需要重新下载。
查看新证书有效期:
sudo openssl x509 -noout -dates -in /etc/nginx/ssl/carreyda.com/carreyda.com_bundle.crt
5. 检查配置并重载 Nginx
sudo nginx -t && sudo systemctl reload nginx
出现 syntax is ok 和 test is successful 即可。
6. 验证线上生效
echo | openssl s_client -connect carreyda.com:443 -servername carreyda.com 2>/dev/null | openssl x509 -noout -dates
notAfter 为新的到期日期即成功。也可以在浏览器新开标签页访问 https://carreyda.com,点击地址栏左侧图标查看证书。
7. 清理
# 删除 /tmp 里的私钥副本
rm /tmp/carreyda.com.key /tmp/carreyda.com_bundle.crt
# (可选)删除备份
sudo rm /etc/nginx/ssl/carreyda.com/*.bak
常见问题
| 现象 | 原因 / 处理 |
|---|---|
cd /etc/nginx/ssl/...: Permission denied |
目录仅 root 可进入,改用 sudo + 绝对路径 |
scp 提示 No such file |
本地文件缺少 .crt 后缀,执行 Rename-Item "carreyda.com_bundle" "carreyda.com_bundle.crt" |
| 两个 md5 不一致 | key 与证书不匹配,重新下载同一张证书的文件 |
| reload 后浏览器仍提示过期 | 浏览器缓存,或前面还有 CDN / 代理持有旧证书;新开标签页或 Ctrl+Shift+R |
| 证书已更新但仍显示"不安全" | 点"不安全"看具体原因:是否访问了 http://(需配 80 → 443 跳转)、页面是否有 Mixed Content(F12 Console 查看) |
HTTP 跳转 HTTPS 的配置:
server {
listen 80;
server_name carreyda.com www.carreyda.com;
return 301 https://$host$request_uri;
}
下次到期提醒
- 本次证书到期:2026-12-18,建议 12 月 10 日左右开始续期。
- 想免手动更新:改用
acme.sh或certbot自动签发与续期。