我正在尝试创建一个公司内部 CA 来消除我们服务器所需的所有 SSL 例外情况,但在创建证书时,我对这样做的安全隐患产生了一些怀疑。我理解需要如何做到这一点的方式是:
- 使用 CA 标志创建自签名证书(openssl 为我提供了一个 .pem 和 .key 文件),证书名称为 ca.mycompany.org
- 将这些文件转为 .pfx
- 在客户端 Firefox 证书存储区的受信任根 CA 存储中安装 .pem
- 在我们的 Windows 客户端的系统受信任根 CA 存储中安装 .pfx(适用于 IE 和 Chrome)
- 为我们所有的内部服务器创建由 ca.mycompany.org 签名的证书
我现在的疑虑来自:没有私钥就无法创建有效的 PFX - 并且一旦证书安装在 PC 上,每个人都可以再次从信任存储中导出 PFX。这意味着,理论上每个人都可以访问 CA 私钥,并且理论上可以颁发由我们新的内部 CA 签名的自己的证书。这将为恶意服务器和其他欺骗行为打开所有大门(因为最坏的攻击者通常来自内部......)
我确信我的想法在某个地方出了问题,PFX/SSL 概念的设计不可能有这么大的错误,但我似乎找不到我的错误。请为我提供启发。
答案1
您应该只在客户端上安装 CA 的公钥,私钥绝不能离开 CA 计算机(当然,备份除外,备份应放在保险箱中,最好放在远程位置)。
实际上,通常的做法是创建一个子 CA 来在不同的机器上生成实际证书,然后关闭根 CA,并在证书过期时再次打开它来为子 CA 创建新的证书。
一旦子证书被泄露,最简单的方法就是撤销它。