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的私钥和证书,必须做离线备份。而且不能只备份一份。

我设计的备份方案是这样的:

  1. 主备份:加密U盘,锁入公司保险柜
  2. 异地备份:加密U盘,存银行保管箱
  3. 冷备份:打印成纸质二维码,密封存档

备份操作流程:

# 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时对照着走一遍,基本不会漏步骤。

根CA搭建与离线管理流程图 根CA搭建与离线管理全流程 1. 物理机准备 2. 密钥生成 3. 自签名证书 4. 离线备份 禁用网卡 · 封USB · 拆光驱 最小化系统 · 仅装OpenSSL RSA 4096 · AES-256加密 密码分片 · 3人保管 有效期10年 · SHA-256签名 验证Issuer=Subject 主备份 · 异地备份 · 冷备份 校验哈希 · 台账管理 ⚠️ 核心原则 根CA从出生到退役,全程离线。私钥加密存储,密码分片保管,备份至少三份。 5. 归档 · 保险柜 · 银行保管箱 主备份:公司保险柜 异地备份:银行保管箱 冷备份:纸质二维码密封

3.6 避坑指南

这些年我踩过的坑,列出来给你参考:

  • 别用虚拟机做根CA:快照文件、vmdk文件都可能泄露私钥。我见过一个案例,运维把虚拟机模板上传到公共镜像仓库,根CA私钥直接裸奔。
  • 密码别太复杂也别太简单:太复杂记不住,写纸上更危险。我建议用20位随机字符,分片后每人记一段。
  • 备份介质要定期验证:U盘放三年可能就读不出来了。每年至少插上验证一次哈希值。
  • 操作过程要录像:密钥生成、证书签发这些关键操作,全程录像存档。出了事有据可查。
📌 最后说一句: 根CA搭建好了就别轻易动它。我见过有人每隔半年「优化」一次根CA配置,结果第三次就把私钥搞丢了。搭建时一次做对,之后只做备份验证,别折腾。