gpt4 book ai didi

从 keystore 检索私钥时发生 Java 转换错误

转载 作者:行者123 更新时间:2023-12-01 20:21:03 30 4
gpt4 key购买 nike

我目前正在尝试对 SOAP 消息进行数字签名,并且正在按照以下链接中的 Oracle 指南进行操作:

Programming With the Java XML Digital Signature API

当我最初运行代码时,出现以下错误:

java.lang.UnsupportedOperationException: trusted certificate entries are not password-protected

然后我修改了以下行:

KeyStore.PrivateKeyEntry keyEntry =
(KeyStore.PrivateKeyEntry) ks.getEntry
("mykey", new KeyStore.PasswordProtection("changeit".toCharArray()));

至:

KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry("mykey", null);

但是,我现在收到以下错误消息:

 java.lang.ClassCastException: java.security.KeyStore$TrustedCertificateEntry cannot be cast to java.security.KeyStore$PrivateKeyEntry

我假设上述指南中解释的代码是正确的,因此我认为我的 keystore 证书可能有问题?

将证书导入 keystore 时,我执行了以下操作:

1) 使用以下命令从 .pfx 文件创建 .pem:

 openssl pkcs12 -in myfile.pfx -out myfile.pem -clcerts

2) 然后,由于 .pem 格式未导入 keystore ,我将 .pem 转换为 .der 文件。我使用以下命令从 .pem 转换为 .der:

 openssl x509 -outform der -in myfile.pem -out myfile.der

3)最后,我通过运行以下命令导入了 .der 文件:

keytool -import -alias mykey -keystore "C:\Program Files\Java\jdk1.8.0_131\jre\lib\security\cacerts" -file myfile.der

任何有关此问题的帮助将不胜感激。谢谢。

最佳答案

您需要将证书的私钥导入到 keystore 中,而不仅仅是公钥。不建议更新JVM的标准cacerts。使用新文件

但是你的这三个步骤并不是真正需要的。只需直接使用 pfx 文件作为 PKCS12 keystore ,而不是 JKS

关于从 keystore 检索私钥时发生 Java 转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44679226/

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