上一篇
https证书更换
- 行业动态
- 2025-04-30
- 3984
生成新CSR,向CA申请证书,部署至服务器并重启服务,完成HTTPS证书更换
HTTPS证书更换操作指南
证书更换原因
- 证书过期:现有证书临近有效期(通常剩余30天内需更新)。
- 证书类型升级:如从DV(域名验证)升级为OV(组织验证)或EV(扩展验证)。
- 域名变更:新增子域名或修改主域名。
- 颁发机构更换:切换CA(如Let’s Encrypt、DigiCert等)。
- 安全协议更新:支持TLS 1.3或禁用老旧加密算法。
更换前准备
步骤 | 操作 | 说明 |
---|---|---|
1 | 备份配置文件 | 保存当前服务器的证书文件、私钥和配置文件(如Nginx的nginx.conf )。 |
2 | 检查域名解析 | 确保域名能正常解析到服务器IP,避免更换过程中中断访问。 |
3 | 生成新密钥对(可选) | 若需更换密钥算法(如RSA→ECDSA),需重新生成密钥。 |
生成新证书
生成密钥和CSR(证书签名请求)
# 生成RSA密钥(2048位) openssl req -newkey rsa:2048 -nodes -keyout new_key.pem -out new_csr.pem # 生成ECDSA密钥(推荐现代浏览器) openssl req -newkey ec:secp384r1 -nodes -keyout new_ec_key.pem -out new_ec_csr.pem
- Common Name:填写主域名(如
example.com
)。 - Subject Alternative Name (SAN):添加所有子域名(如
.example.com
、www.example.com
)。
- Common Name:填写主域名(如
提交到CA
- 免费证书(如Let’s Encrypt):
certbot certonly --csr new_csr.pem --authenticator webroot -w /var/www/html
- 付费证书(如DigiCert):
登录CA平台上传CSR并完成验证(DNS、邮件、文件等)。
- 免费证书(如Let’s Encrypt):
安装新证书
替换证书文件
| 文件类型 | 路径示例 | 说明 |
|———-|———-|——|
| 证书文件 |/etc/ssl/certs/new_cert.pem
| CA颁发的证书内容。 |
| 私钥文件 |/etc/ssl/private/new_key.pem
| 生成的密钥文件。 |
| 中间证书 |/etc/ssl/certs/chain.pem
| CA提供的中间证书链(部分CA需要)。 |更新服务器配置
- 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; # 如需中间证书 # 其他配置... }
- Apache示例:
SSLEngine on SSLCertificateFile /etc/ssl/certs/new_cert.pem SSLCertificateKeyFile /etc/ssl/private/new_key.pem SSLCertificateChainFile /etc/ssl/certs/chain.pem # 如需中间证书
- Nginx示例:
重启服务
# Nginx systemctl restart nginx # Apache systemctl restart httpd
验证新证书
- 浏览器检查:访问
https://your-domain.com
,确认绿色锁标志和证书信息。 - 在线工具检测:使用SSL Labs或Qualys SSL验证配置。
- 命令行验证:
openssl s_client -connect your-domain.com:443 -servername your-domain.com
清理旧证书
- 删除旧证书文件(如
old_cert.pem
、old_key.pem
)。 - 注意:保留旧配置文件至少30天,以防新证书出现问题需回滚。
相关问题与解答
问题1:如何自动续期Let’s Encrypt证书?
解答:
使用certbot
的自动续期功能:
- 安装
certbot
并配置自动续期:certbot renew --dry-run # 测试续期
- 设置定时任务(如Ubuntu的Cron):
crontab -e # 添加以下行(每天凌晨2点检查) 0 2 /usr/bin/certbot renew --quiet --renew-hook "systemctl restart nginx"
问题2:通配符证书和多域名证书有什么区别?
解答:
| 特性 | 通配符证书(如.example.com
) | 多域名证书(如example.com
+ test.com
) |
|——|———————————|——————————————|
| 适用场景 | 同一主域名下的所有子域名 | 多个独立域名或子域名 |
| 限制 | 仅支持同一根域名的子域 | 支持不同顶级域名或子域 |
| 性价比 | 适合多子域场景 | 适合跨域名业务 |
| 示例 | .example.com
覆盖a.example.com
、b.example.com
| example.com
+ `test.