3、根CA的搭建与离线管理
根CA是整个PKI体系的信任锚点。说白了,它就是那个「所有人都信你,但你没地方可找别人信」的角色。我这些年见过不少企业,根CA随便装在一台能上网的服务器上,结果出了问题整个证书链都得重建。嗯,这章咱们就聊聊怎么把根CA真正「锁起来」。
3.1 物理隔离策略
根CA必须离线。这不是建议,是铁律。
我个人习惯的做法是:准备一台专门的物理机,不装网卡,或者装完系统后直接禁用所有网络接口。USB口用胶封死,光驱拆掉。这台机器从出生到退役,绝不碰任何网络。
⚠️ 注意: 虚拟机快照、克隆、迁移功能虽然方便,但会暴露根CA私钥。我见过有人把根CA跑在VMware上,结果快照文件被运维误传到公网仓库……那场面,惨不忍睹。
隔离策略的核心要点:
- 物理隔离:专用主机,无网卡/禁用网络
- 外设管控:封USB口,禁用光驱,仅保留键盘鼠标
- 系统最小化:只装操作系统和OpenSSL,不装任何多余软件
- 启动验证:每次开机前检查机箱封条是否完好
3.2 根CA密钥生成与保护
密钥生成这一步,我建议你亲自盯着屏幕操作。别让脚本自动跑,也别让实习生代劳。
先看看密钥生成的命令:
# 生成根CA私钥(RSA 4096位)
openssl genrsa -aes256 -out rootCA.key 4096
# 查看私钥信息
openssl rsa -in rootCA.key -text -noout
这里有个细节:-aes256 参数会要求你输入一个密码来加密私钥文件。这个密码就是最后一道防线。我曾经在一个项目里,客户把密码写在便签纸上贴在显示器边框上……嗯,后来我们强制改成了密码分片存储。
💡 我的经验: 密钥生成时,建议在系统启动后先执行
openssl rand -hex 32 收集足够的熵。虚拟机环境下熵池容易不足,密钥质量会打折扣。
密钥保护的三层机制:
| 层级 | 措施 | 说明 |
|---|---|---|
| 第一层 | 文件加密 | 私钥文件使用AES-256加密存储 |
| 第二层 | 物理访问控制 | 存放私钥的介质锁入保险柜 |
| 第三层 | 密码分片 | 加密密码拆成3份,由3人分别保管 |
3.3 根CA证书自签名
自签名证书,就是根CA给自己发一张「身份证」。没有上级CA给它背书,它自己就是权威。
生成自签名证书的命令:
# 生成自签名根证书(有效期10年)
openssl req -x509 -new -nodes \
-key rootCA.key \
-sha256 -days 3650 \
-out rootCA.crt \
-subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/CN=MyCompany Root CA"
这里我踩过一个坑:-nodes 参数的意思是「不加密私钥」,但前面我们已经用 -aes256 加密过了,所以这里用 -nodes 没问题。如果你前面没加密私钥,这里又用了 -nodes,那私钥就是明文存储——千万别这么干。
证书内容验证:
# 查看证书详情
openssl x509 -in rootCA.crt -text -noout
你会看到证书里 Issuer 和 Subject 字段一模一样,这就是自签名的特征。
🔑 关键点: 自签名证书的有效期建议设5-10年。太短了频繁更新麻烦,太长了密钥老化风险增加。我个人偏好8年,刚好跨两个硬件更新周期。
3.4 根CA的离线存储与备份
根CA的私钥和证书,必须做离线备份。而且不能只备份一份。
我设计的备份方案是这样的:
- 主备份:加密U盘,锁入公司保险柜
- 异地备份:加密U盘,存银行保管箱
- 冷备份:打印成纸质二维码,密封存档
备份操作流程:
# 1. 导出私钥(加密状态)
cp rootCA.key /mnt/usb/backup/
# 2. 导出证书
cp rootCA.crt /mnt/usb/backup/
# 3. 导出证书请求(如有)
cp rootCA.csr /mnt/usb/backup/
# 4. 生成校验哈希
sha256sum rootCA.key rootCA.crt > /mnt/usb/backup/checksum.txt
⚠️ 重要提醒: 每次备份后,必须验证哈希值是否一致。我曾经遇到过U盘坏块导致备份文件损坏,半年后恢复时才发现——还好当时做了三份备份。
备份介质的管理规范:
- 每份备份贴标签,注明日期、用途、有效期
- 建立备份台账,记录每次存取操作
- 每年至少验证一次备份完整性
- 介质每3年更换一次,防止数据衰减
3.5 根CA搭建全流程SVG
下面这张图,把根CA从搭建到归档的完整流程串起来了。你保存下来,以后每次搭建根CA时对照着走一遍,基本不会漏步骤。
3.6 避坑指南
这些年我踩过的坑,列出来给你参考:
- 别用虚拟机做根CA:快照文件、vmdk文件都可能泄露私钥。我见过一个案例,运维把虚拟机模板上传到公共镜像仓库,根CA私钥直接裸奔。
- 密码别太复杂也别太简单:太复杂记不住,写纸上更危险。我建议用20位随机字符,分片后每人记一段。
- 备份介质要定期验证:U盘放三年可能就读不出来了。每年至少插上验证一次哈希值。
- 操作过程要录像:密钥生成、证书签发这些关键操作,全程录像存档。出了事有据可查。
📌 最后说一句: 根CA搭建好了就别轻易动它。我见过有人每隔半年「优化」一次根CA配置,结果第三次就把私钥搞丢了。搭建时一次做对,之后只做备份验证,别折腾。