首先应该检查证书是否真的过期,然后生成新的CSR(证书签名请求),向CA(证书颁发机构)申请新证书,获取新证书后,需要安装到服务器上,安装完成后,验证是否正确安装。下面我具体说一下更新过期的SSL证书需要具体步骤,以确保网站或服务的安全性和正常运行:
1. 确认证书已过期
检查证书有效期:
通过浏览器访问网站,点击地址栏的锁形图标,查看证书详情中的有效日期。
使用命令行工具检查(例如OpenSSL):
bash
复制
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com | openssl x509 -noout -dates
2. 生成新的证书签名请求(CSR)
使用现有私钥或生成新私钥:
如果继续使用当前私钥(需确保私钥安全):
bash
复制
openssl req -new -key existing.key -out new.csr
如果需要生成新私钥(推荐更安全):
bash
复制
openssl genrsa -out new.key 2048
openssl req
-new -key new.key -out new.csr
填写CSR信息:确保域名、组织信息与原始证书一致(尤其是域名匹配)。
3. 向证书颁发机构(CA)申请新证书
提交CSR:
登录CA(如DigiCert、Let's Encrypt、GoDaddy等)的控制面板,提交新的CSR。
若使用Let's Encrypt,可自动续签(跳过手动CSR步骤):
bash
复制
certbot renew --force-renewal
完成域名验证:
根据CA要求,选择DNS验证(添加TXT记录)、HTTP文件验证或邮箱验证。
4. 获取并安装新证书
下载证书文件:
从CA处下载新证书(通常包括证书文件、中间证书和根证书)。
Let's Encrypt证书路径一般为 /etc/letsencrypt/live/yourdomain.com/。
安装到服务器:
Apache:
apache
复制
SSLCertificateFile /path/to/new.crt
SSLCertificateKeyFile /path/to/new.key
SSLCertificateChainFile /path/to/intermediate.crt
重启服务:systemctl restart apache2
Nginx:
nginx
复制
ssl_certificate /path/to/fullchain.pem; # 包含证书和中间证书
ssl_certificate_key /path/to/new.key;
重启服务:systemctl restart nginx
IIS:
使用“服务器证书”工具导入新证书,并绑定到网站。
5. 验证新证书
在线工具检查:
使用 SSL Labs SSL Test 或 Why No Padlock? 验证安装是否正确。
命令行验证:
bash
复制
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com | openssl x509 -noout -text
6. 更新相关服务与链接
如果证书用于多个服务(如CDN、邮件服务器、API网关等),需同步更新所有位置的证书。
检查混合内容(HTTP资源)问题,确保网站完全使用HTTPS。
7. 设置自动续订(推荐)
Let's Encrypt自动化:
bash
复制
测试自动续订
certbot renew --dry-run
添加定时任务(每月凌晨检查续订)
crontab -e
0 0 1 * * /usr/bin/certbot renew --quiet
其他CA:通过脚本或工具(如acme.sh)实现自动化。
注意事项
1. 备份旧证书:保留旧证书和私钥至少一周,防止回滚需要。
2. 证书链完整:确保服务器配置包含中间证书,避免浏览器不信任。
3. 监控提醒:使用工具(如UptimeRobot、Certbot提醒)监控证书有效期,提前30天处理续订。
上面就是更新过期SSL证书的过程,通过这些步骤即可安全更新过期的SSL证书,确保服务不中断且符合安全标准。