java密钥库文件限制

java密钥库文件限制,java,security,keystore,digital-certificate,Java,Security,Keystore,Digital Certificate,我为我的PFX证书()创建了一个密钥库文件,但我需要知道一个密钥库文件(JKS)中可以存储多少个密钥 我目前正在加载证书,如下所示: KeyStore oStore = KeyStore.getInstance("PKCS12"); oStore.load(new FileInputStream(AppConfig.get(AppConfig.SRC_KEY)), "SECRET".toCharArray()); ... oStore.setKeyEntry(idAlias, priv

我为我的PFX证书()创建了一个密钥库文件,但我需要知道一个密钥库文件(JKS)中可以存储多少个密钥

我目前正在加载证书,如下所示:

KeyStore oStore = KeyStore.getInstance("PKCS12");
oStore.load(new FileInputStream(AppConfig.get(AppConfig.SRC_KEY)), 
    "SECRET".toCharArray());
...
oStore.setKeyEntry(idAlias, privateKey, pwd.toCharArray(), chain);
oStore.store(new FileOutputStream(AppConfig.get(AppConfig.SRC_KEY)),  
    "SECRET".toCharArray());

我可以在此密钥存储库中存储的密钥和证书的数量是否有限制?

AFAIK密钥存储库可以保存的证书没有限制。

我假设您指的是SunJSSE提供商提供的。这是的一个实现,因此您可以像查看任何PKCS#12文件一样查看它

因此,我建议每个文件都包含一个私钥和证书

如果你想用证书存储很多密钥,我建议你考虑使用一个普通的密钥存储库(而不是PKCS第12种变体)。 我可以存储的密钥和证书的数量有限制吗 这个密钥库

老实说,我不知道您是否可以在
PKCS12
中实际存储超过1个私钥,但即使您可以,这也是一种非常不寻常的用法,不推荐使用。
这些密钥存储库用作私有凭据的容器,并不意味着要共享,如果您添加多个私钥及其相应的公钥和链,这基本上就是您要做的事情。
这些容器通常具有访问它所需的加密密码,并且私钥条目使用相同的密码。因此,将多个私钥保存在同一容器中不是一个好的选择,因为它们将共享相同的密码。
可能有一个提供商(如Bouncy Castle)允许您设置不同的密码,但如果您打算使此容器可移植,即供任何应用程序使用,则此容器将完全不可用,因为它不会期望您描述的内容

更新:

你的问题与你链接的帖子完全无关。这种情况下的问题是太多http连接器线程访问了密钥库文件。这是一个线程问题。与你的问题无关。

但是我读了这篇文章,虽然我没有使用tomcat,但是使用glassfish,我想知道限制是linux还是java密钥库。有一个链接指示密钥库文件规范?我不认为它说明了密钥库中证书数量的限制。我认为这样可以在一个密钥库文件中存储5000多个密钥,it?目前我正在我的软件中进行测试,我能够毫无问题地加载10多个pfx证书,然后分配一个别名以获取和使用。存储库有一个主密钥,每个密钥分别有一个私钥,我已经在另一个安全的地方记录了它。
pkcs12
是加密的,例如使用密码
1234
。您是说您有10个私钥条目,并且每个别名使用了不同的密码(从
1234
和其他密码)?例如,
567
789
等?没错,你可以在
pwd.tocharray()
所示的代码中看到你在使用Bouncy Castle吗?如果我记得SUN的提供商不允许你设置不同的密码。另外,你的用例是什么?你所做的不是(AFAIK)常见做法
传统上,PKCS#12文件包含私钥、其相应的证书和一个或多个CA证书,还可以包含用于完整性测试的MAC。
(来自)。