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