gpt4 book ai didi

java - 在 Java Keystore 中导入 pkcs12 (.p12) 客户端证书文件时,CertificateChain 为空

转载 作者:行者123 更新时间:2023-12-04 07:22:41 26 4
gpt4 key购买 nike

我将带有证书链的客户端-ssl-证书 key 对导出为 PKCS12 文件 keystore 资源管理器。我能够再次使用 KSE 加载此 PKCS12 文件,并且 key 对和证书链都在那里。当我将它加载到 java KeyStore 中时,我能够访问 key ,但证书链为空。

这是我的代码:

        final KeyStore instance = KeyStore.getInstance( "pkcs12" );
instance.load( new ByteArrayInputStream( bytes ), password );

instance.getKey(alias, password) => returns Key
instance.getCertificateChain(alias) => returns null

final KeyStore.ProtectionParameter param = new KeyStore.PasswordProtection( password );
final KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry) instance.getEntry( alias, param );

=> fails:

java.lang.NullPointerException: invalid null input
at java.security.KeyStore$PrivateKeyEntry.<init>(KeyStore.java:524) ~[na:1.8.0_202]
at sun.security.pkcs12.PKCS12KeyStore.engineGetEntry(PKCS12KeyStore.java:1311) ~[na:1.8.0_202]
at java.security.KeyStore.getEntry(KeyStore.java:1521) ~[na:1.8.0_202]

通过调试我可以看到,调用 PrivateKeyEntry 的构造函数时链参数为空:

image: debugging PrivateKeyEntry constructor call

我对此完全没有解释,并且在互联网上也没有找到任何信息。

我可以排除使用的别名和使用的密码作为原因。

我会感谢有关此主题的任何提示。

提前致谢

亚历山大

最佳答案

如你所见:

https://github.com/frohoff/jdk8u-jdk/blob/master/src/share/classes/java/security/KeyStore.java#L523

以下三种情况之一会抛出异常:

  1. 您有 key 但没有私钥。
  2. 你没有链(那是你说的)。
  3. 你没有属性。

要确保链是问题所在,您可以使用以下命令激活调试

 -Djava.security.debug=all

关于java - 在 Java Keystore 中导入 pkcs12 (.p12) 客户端证书文件时,CertificateChain 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68398056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com