EJBCA如何生成私钥

我正在寻找EJBCA用于生成一般私钥(CA,Sub-Ca,证书…)的方法。

比如说你想要RSA 2048的密钥大小。 生成过程是否全部在EJBCA应用程序中完成? 他们是否依赖基于Java EE的应用程序服务器随机生成(在我的情况下是Jboss)? 是否有一个地方与本地实施的随机数生成的链接,例如在Linux / dev /(u)随机?

什么是熵的水平,他们保证一个?

我从EJBCA邮件列表中得到了答案,我也在源代码中获取了信息。

也许这可能对别人有所帮助,所以我会在这里贴上答案。

EJBCA用来生成私钥的底层方法是通过Java类java.util.Random和类java.security.SecureRandom。

在EJBCA代码中,密钥由CryptoTokenManagementSessionBean类的createCryptoToken方法生成,该方法使用来自文件模块/ cesecore-ejb / src / org / cesecore / keys / token / CryptoTokenManagementSessionBean.java的SecureRandom

最后OpenJDK SecureRandom实现使用/ dev / random。 所以总的熵是/ dev / random的熵。 有很多方法来改善它的熵池。 解决scheme是使用硬件令牌。

注意:这里只适用于没有HSM的系统(在这种情况下,密钥是在HSM中生成的,所以它依赖于HSM),并运行在Linux上(最有可能的系统是/ dev / random,所以BSD系列)。