PKI EJBCA:从EJBCA实例中提取CA,只保留子CA

我正在寻找一个解决scheme,从EJBCA实例中提取CA,把它放在一个外部驱动器,例如安全保pipe。 所以我只保留子ca在EJBCA实例中签署最终用户证书

那么当我需要再次生成一个sub-ca或者撤销一个已经创build的sub-ca的时候,我只会把它放回去。

这样,我可以确保即使我的服务器受到攻击,我确信只有剩余的子networking受到攻击,但是我的根CA仍然有效。

有没有办法做这样的事情?

谢谢。

让根CA脱机是一个完善的安全策略,所以这是一个非常好的开始。 但是如果你希望它完全独立,你不应该首先在同一台服务器上build立根CA和子CA,然后删除根CA–相反,你应该从头开始单独设置它们,需要经过任何额外的努力来分开它们。 我将在下面列出几个关于它的方法,还有一种方法是只要锁住钥匙,同时保持实际的CA在同一个地方。

1 – 完全独立的服务器

最安全的方法是把钱扔在问题 – 即获得一个单独的服务器的根CA. 在该服务器上创build根CA. 然后转到要运行颁发CA的服务器,并在该服务器上创build子CA。 让根CA签署子CA; 有关EJBCA用户指南中有关如何执行此操作的信息。 一旦完成,您可以locking与根CA的服务器。

2 – 分开的磁盘

第二种方法是有一个单独的EJBCA / JBoss实例和数据库(通常是MySQL),其中所有数据都存储在可移动磁盘上。 好处是你没有额外的服务器。 缺点是增加了一些复杂性 – 你需要单独的configuration文件和systemd启动configuration/ init文件,等等。 但是基本上就像使用单独的服务器一样,除了closures整个服务器之外,您可以closuresJBoss和数据库实例,卸载数据所在的磁盘,然后将磁盘locking。

3 – 删除密钥而不是磁盘/服务器

您可以将根CA与颁发CA(s)一起保留,但删除其私钥。 这实际上是削弱了它 – 它在那里,但它不能签署任何东西,所以它不能被滥用。 这是最便宜的方法,而且在使用root-CA时也更容易。 请在第一次testing之前进行备份!

以下所有步骤都是从命令行完成,而不是从Web GUI完成。 你可以从GUI中完成一些操作,但是你仍然需要访问实际的服务器来移动东西,所以我觉得在这里做所有的事情都比较容易。

  1. 将根CA密钥导出到PKCS#12文件
 $ bin / ejbca.sh ca exportca TestCA /mnt/USBDrive/TestCA.p12
使用JBoss JNDI提供者...
input密钥库密码:YourVeryGoodPassword
  1. 卸下USB驱动器并将其locking在保险柜中。

  2. 从服务器上删除密钥库

 $ bin / ejbca.sh ca removekeystore TestCA
使用JBoss JNDI提供者...

如果您现在查看GUI,您将看到TestCA处于脱机状态,无法激活。

  1. 如果要再次使用根CA,请导入密钥库:
 $ bin / ejbca.sh ca restorekeystore TestCA /mnt/USBDrive/TestCA.p12 -s SignatureKeyAlias -e EncryptionKeyAlias
使用JBoss JNDI提供者...
input密钥库密码:YourVeryGoodPassword
 $ 

当然你也可以像第三步一样去除密钥存储,一旦你完成了你正在做的任何事情。