搭建后如何保障SSL证书的安全存储
SSL证书怎么存才安全,别让私钥裸奔
拿到证书那一刻,真正的风险才开始。私钥泄露=证书白搭。
核心原则:私钥和证书必须分开存放
很多人把.crt和.key扔同一个目录,权限755,这等于把钥匙和门牌号贴一起。
正确做法:
文件 存放位置 权限
证书(.crt) 公开目录,Web能读取 644
私钥(.key) 非Web目录,如/etc/ssl/private/ 600
中间证书 跟证书放一起 644
Nginx配置里用绝对路径指向私钥,别跟证书放同级目录。
服务器上的防护
- 权限锁死
bash
chmod 600 /etc/ssl/private/yourdomain.key
chown root:root /etc/ssl/private/yourdomain.key
只有root能读,Nginx用单独用户跑,配ssl_certificate_key时用root启动,然后drop权限。
- 别把私钥放代码仓库
Git里加.gitignore,把.key、.pem全挡住。泄露一次,Git历史里永远有。 - 加密存储(进阶)
私钥用密码加密:
bash
openssl rsa -aes256 -in yourdomain.key -out yourdomain.enc.key
Nginx启动时输入密码加载。重启服务器得人工输入,麻烦但安全。或者用云服务商的KMS(阿里云/AWS)托管私钥,根本不落地。
备份怎么搞
备份必须加密,别传裸文件。
bash
tar czf ssl-backup.tar.gz /etc/ssl/
gpg --symmetric --cipher-algo AES256 ssl-backup.tar.gz
备份文件存两个地方:本地加密包 + 离线介质(U盘锁抽屉里)。别只放云盘,云盘被盗号就全完了。
几个容易忽略的点
问题 后果 做法
私钥没设密码 服务器被入侵直接拿走 openssl rsa -aes256加密
日志里打印了私钥内容 调试时意外泄露 审计日志,确保没输出key内容
证书过期没人管 网站直接变不安全 设监控,过期前30天告警
多台服务器各自存私钥 管理混乱,容易漏更新 统一用配置中心或KMS分发
一句话:证书不怕公开,怕的是私钥被偷。权限600、密码加密、备份加密,这三步做到位,基本就稳了。