上一篇
https证书更新
- 行业动态
- 2025-04-30
- 3473
HTTPS证书更新需在到期前通过域名验证重新申请,替换服务器旧证书并重启服务,建议提前30天操作
HTTPS证书更新指南
证书更新前的准备
检查证书有效期
- 通过浏览器访问网站,点击锁形图标查看证书剩余天数。
- 使用命令行工具(如
openssl
)检查:openssl s_client -connect yourdomain.com:443 -servername yourdomain.com < /dev/null | grep "Not Before"
备份现有证书和私钥
- 路径示例:
/etc/ssl/certs/yourdomain.com.crt
(证书)、/etc/ssl/private/yourdomain.com.key
(私钥)。 - 复制到安全目录:
cp /etc/ssl/certs/yourdomain.com.crt /backup/certs/ cp /etc/ssl/private/yourdomain.com.key /backup/keys/
- 路径示例:
确认证书类型
| 证书类型 | 验证方式 | 适用场景 |
|—|—|—|
| DV SSL(域名验证) | 仅验证域名所有权 | 个人网站、测试环境 |
| OV SSL(组织验证) | 验证企业身份 | 企业官网、中小型电商 |
| EV SSL(扩展验证) | 严格企业验证 + 域名验证 | 金融、政府类网站 |
更新流程步骤
生成新的密钥对(如需要)
- 推荐使用
openssl
生成:openssl genrsa -out new_private.key 2048 openssl req -new -key new_private.key -out new_csr.csr
- 推荐使用
提交证书签发请求
- Let’s Encrypt(免费):
certbot renew --dry-run # 测试续订流程 certbot renew --force-renewal # 强制更新
- 付费CA(如DigiCert):
登录CA账户,提交CSR文件或使用API自动续订。
- Let’s Encrypt(免费):
安装新证书
- Nginx配置示例:
server { listen 443 ssl; ssl_certificate /etc/ssl/certs/new_cert.pem; ssl_certificate_key /etc/ssl/private/new_key.pem; ssl_trusted_certificate /etc/ssl/certs/chain.pem; # 中间证书链 }
- IIS配置:
通过MMC导入.pfx
文件,绑定到网站。
- Nginx配置示例:
验证更新结果
- 使用在线工具(如 SSL Labs)检测评分。
- 检查浏览器地址栏是否显示绿色锁。
自动化续期方案
工具 | 适用场景 | 命令示例 |
---|---|---|
Certbot | Let’s Encrypt 证书 | certbot renew --duplicate |
cron-job | 定时任务(Linux) | 0 0 /30 /usr/bin/certbot renew --quiet |
Windows Task Scheduler | 定时任务(Windows) | 配置PowerShell脚本执行Certbot |
常见问题与解决
浏览器仍提示“不安全”
- 可能原因:中间证书链缺失。
- 解决方案:将CA提供的中间证书(
chain.pem
)与主证书合并。
续期后证书未生效
- 检查服务器是否加载了新证书文件。
- 重启Web服务(如
systemctl restart nginx
)。
相关问题与解答
Q1:如何查看当前HTTPS证书的剩余有效期?
A1:
- 使用浏览器开发者工具:按
F12
→ Security → View Certificate → Details 标签页。 - 命令行工具:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates
Q2:Let’s Encrypt证书更新失败怎么办?
A2:
- 检查DNS解析是否正常,确保域名能解析到服务器。
- 清理旧证书缓存:
sudo rm -f /etc/letsencrypt/renewal/.i /etc/letsencrypt/renewal/.conf
- 手动触发更新:
sudo certbot renew --dry-run