我正在寻找一种从 EJBCA 实例中提取 CA 的解决方案,将其放在外部驱动器上,例如,该驱动器被固定在保险箱中。因此,我只保留用于在 EJBCA 实例中签署最终用户证书的子 CA。
然后我只会在需要再次生成 sub-ca 或撤销已经创建的 sub-ca 时将其放回去。
这样我就可以确保即使我的服务器被入侵,我确信只有剩余的 sub-ca 被入侵,但我的根 ca 仍然有效。
有没有办法做这样的事情?
谢谢。
我正在寻找一种从 EJBCA 实例中提取 CA 的解决方案,将其放在外部驱动器上,例如,该驱动器被固定在保险箱中。因此,我只保留用于在 EJBCA 实例中签署最终用户证书的子 CA。
然后我只会在需要再次生成 sub-ca 或撤销已经创建的 sub-ca 时将其放回去。
这样我就可以确保即使我的服务器被入侵,我确信只有剩余的 sub-ca 被入侵,但我的根 ca 仍然有效。
有没有办法做这样的事情?
谢谢。
使根 CA 脱机是一个可靠的安全策略,因此这是一个很好的开始。但是,如果您希望它完全分开,您不应该首先在同一服务器中构建根 CA 和子 CA,然后删除根 CA - 相反,您应该从一开始就单独设置它们,这样您就不会不需要通过任何额外的努力将它们分开。我将在下面列出几种解决方法,以及一种在将实际 CA 保持在同一个位置的同时锁定密钥的方法。
1 - 完全独立的服务器
最安全的方法是花钱解决问题 - 即为根 CA 获取单独的服务器。在该服务器上创建根 CA。然后转到您将在其上运行颁发 CA 的服务器并在该服务器上创建子 CA。让根 CA 签署子 CA;EJBCA 用户指南中有关于如何执行此操作的信息。完成后,您可以锁定带有根 CA 的服务器。
2 - 单独的磁盘
第二种方法是拥有一个单独的 EJBCA/JBoss 实例和数据库(通常是 MySQL),其中所有数据都存储在可移动磁盘上。优点是您没有额外的服务器。缺点是增加了一些复杂性 - 你需要单独的配置文件和 systemd 启动配置/初始化文件,等等。但是你基本上会以与单独服务器相同的方式进行操作,除了关闭整个服务器,而是关闭 JBoss 和数据库实例,卸载它们的数据所在的磁盘,然后锁定磁盘.
3 - 删除密钥而不是磁盘/服务器
您可以将根 CA 与发布 CA 一起保留,但删除其私钥。这实际上削弱了它 - 它在那里,但它不能签署任何东西,所以它不能被滥用。这是最便宜的方式,并且在您使用根 CA 时也更容易。在第一次测试之前请务必备份!
下面的所有步骤都是从命令行完成的,而不是从 Web GUI 完成的。您可以从 GUI 中完成其中的一些操作,但您仍然需要访问实际服务器才能移动内容,所以我发现从那里开始做所有事情都更容易。
卸载 USB 驱动器并将其锁定在保险箱中。
从服务器中删除密钥库
如果您现在查看 GUI,您将看到 TestCA 处于脱机状态并且无法激活。
当然,一旦你完成了你正在做的任何事情,就像在第 3 步中一样再次删除密钥库。