具有多个密钥(不同密码)的 JKS



我有一个JKS,里面有2个使用keytool生成的键。这两个密钥具有不同的密码,JKS 密码再次与这 2 个密码不同。

如果密钥存储中只有一个密钥,它将按预期工作。但是添加另一个具有不同密码的密码会导致UnrecoverableKeyException.如果两个密钥具有相同的密码,它仍然可以正常工作。

查看与此相关的一些问题:具有多个密钥和不同密码的Java密钥库,原因:java.security.UnrecoverableKey异常:无法恢复密钥似乎解决方案是使用相同的密码。但这意味着能够为不同的密钥设置不同的密码是没有意义的;我们可以为整个密钥存储设置一个密码,然后将其保留在那里。

看看Tomcat,它似乎也遵循了这种对存储和密钥使用相同的密码的方法。

这是JDK施加的限制吗?有没有办法让不同的密钥使用不同的密码?

这不是JDK的限制,JSSE参考指南回答了您的问题:

对于许多工厂,例如默认的 SunX509 KeyManagerFactory 来自 SunJSSE 提供程序、密钥库和密码是唯一的 初始化 KeyManagerFactory 所需的信息,从而初始化 第一个 init 方法是要调用的合适方法。这 KeyManagerFactory 将查询密钥库以获取有关哪个的信息 私钥和匹配的公钥证书应用于 向远程套接字对等方进行身份验证。密码参数 指定将与以下方法一起使用的密码 从密钥库访问密钥。密钥库中的所有密钥都必须是 受同一密码保护。

有时初始化参数不是密钥库和密码 是提供商需要的。该提供程序的用户应通过 适当的管理器工厂参数的实现为 由提供程序定义。然后,提供程序可以调用指定的 方法,以获取 需要的信息。

您现在知道该怎么做,实现您自己的 ManagerFactoryParameters。但是,如果您还必须更改Tomcat的代码,那就是另一回事了。

相关内容

最新更新