文档中心
Linux鏈嶅姟鍣℉TTPS璇佷功鏇存崲鍏ㄦ敾鐣ユ墜鎶婃墜鏁欎綘瀹夊叏鍗囩骇
时间 : 2025-09-27 16:24:04浏览量 : 1

在当今互联网环境中,HTTPS证书是保障网站数据传输安全的核心组件。无论是证书过期、域名变更还是安全策略升级,Linux服务器上的HTTPS证书更换都是运维人员必须掌握的技能。本文将以最通俗的语言,结合真实场景案例,带你一步步完成从申请到部署的全流程。
一、为什么需要定期更换HTTPS证书?
HTTPS证书通常有1年(如Let's Encrypt)或更长的有效期。不及时更换会导致:
1. 浏览器警告:用户访问时会看到"不安全"提示(如Chrome的红色三角标志)
2. 服务中断:移动APP可能因证书失效导致API请求失败
3. 安全风险:长期使用同一证书增加私钥泄露风险
*真实案例*:2025年某电商网站在大促期间因忘记更新证书,导致支付页面无法加载,直接损失超百万订单。
二、准备工作:4个关键检查点
1. 确认当前证书信息
```bash
openssl x509 -in /path/to/cert.pem -noout -dates
```
输出示例:
`Not Before: Jan 1 00:00:00 2025 GMT`
`Not After : Dec 31 23:59:59 2025 GMT`
2. 备份现有证书
cp /etc/nginx/ssl/example.com.{crt,key} ~/ssl_backup/
建议使用带时间戳的备份目录名(如`ssl_backup_20250815`)
3. 检查服务配置路径
常见位置:
- Nginx: `/etc/nginx/sites-enabled/`
- Apache: `/etc/httpd/conf.d/ssl.conf`
- Docker: `/etc/letsencrypt/live/`
4. 申请新证书(以Let's Encrypt为例)
certbot certonly --webroot -w /var/www/html -d example.com
注意替换`-w`参数为你的网站根目录
三、分步骤更换指南(以Nginx为例)
? 场景1:单域名标准替换
```bash
1. 停止Nginx服务
sudo systemctl stop nginx
2. 替换证书文件(假设新证书在/etc/letsencrypt/live/)
sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/nginx/ssl/server.crt
sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/nginx/ssl/server.key
3. 修改权限保护私钥
sudo chmod 600 /etc/nginx/ssl/server.key
4. 测试配置语法
sudo nginx -t
5. 重启服务
sudo systemctl restart nginx
```
? 场景2:通配符证书更新(适用于*.example.com)
certbot certonly --manual --preferred-challenges=dns \
-d "*.example.com" --server https://acme-v02.api.letsencrypt.org/directory
需按提示添加DNS TXT记录验证域名所有权。
四、高级技巧与避坑指南
█ TLS兼容性优化
在Nginx配置中添加现代加密套件:
```nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
█ OCSP装订提升性能
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 valid=300s;
█ CSR生成时的常见错误解决:
当遇到`ERROR: Unable to verify the domain control...`时:
- DNS解析未生效 → `dig +short example.com`
- HTTP验证文件不可达 → `curl http://example.com/.well-known/acme-challenge/test`
五、验证与监控
1. 在线检测工具:
- [SSL Labs测试](https://www.ssllabs.com/)
- [Cipher Checker](https://ciphersuite.info/)
2. 自动化监控脚本:
!/bin/bash
EXP_DATE=$(openssl x509 -enddate -noout -in cert.pem | cut -d= -f2)
EXP_UNIX=$(date -d "$EXP_DATE" +%s)
NOW_UNIX=$(date +%s)
DAYS_LEFT=$(( (EXP_UNIX-NOW_UNIX)/86400 ))
if [ $DAYS_LEFT -lt 7 ]; then
echo "ALERT! Certificate expires in $DAYS_LEFT days"
fi
六、延伸知识:企业级方案建议
对于大型企业推荐:
- ACME自动化工具:Certbot搭配cron定时任务
- 私有CA体系:使用OpenSSL搭建内部PKI
- 硬件HSM保护私钥:如Thales Luna HSM
通过以上步骤,你不仅能完成基础证书更换,还能优化TLS安全配置。记住定期检查证书状态,建议设置提前30天的提醒机制,避免最后一刻的紧急操作。
TAG:linux https证书更换,linux ssl证书生成,linux证书放在哪个目录,linux证书管理