gpt4 book ai didi

java - NoSuchAlgorithmException : der KeyStore not available

转载 作者:行者123 更新时间:2023-12-02 04:44:52 26 4
gpt4 key购买 nike

我正在尝试对安全网站进行 POST 调用:

步骤:

1) 转到https://www.mywebsite.com (供引用)

2) 将上述网站的 keystore 导出到C:\Program Files\Java\jre7\lib\security

3) 将其导入到 cacerts 以使用 keytool 添加自签名签名

keytool -import -alias my-cert -file c:\cert.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts

完成上述步骤后,我使用了以下程序:

String keystorePathAndName = "C:\\Program Files\\Java\\jre7\\lib\\security\\mykeystore";
String keystoreType = "der";

String keystorePass = "";

Integer port = 8089;
if (System.getProperty("port") != null) {
port = Integer.valueOf(System.getProperty("port"));
}
// Create a server listening on port 8089
Component component = new Component();
Server server = component.getServers().add(Protocol.HTTPS, port);
Series<Parameter> params = server.getContext().getParameters();
params.add("keystorePath", keystorePathAndName);
params.add("keystoreType", keystoreType);

params.add("keystorePassword", keystorePass);


component.getDefaultHost().attach("/Simulator",new UserApplication());
component.start();

错误日志:

Exception in thread "main" java.security.KeyStoreException: der not found
at java.security.KeyStore.getInstance(KeyStore.java:616)
at org.restlet.engine.ssl.DefaultSslContextFactory.createSslContext(DefaultSslContextFactory.java:299)
at org.restlet.engine.connector.HttpsServerHelper.start(HttpsServerHelper.java:92)
at org.restlet.Server.start(Server.java:579)
at org.restlet.Component.startServers(Component.java:642)
at org.restlet.Component.start(Component.java:567)
at com.user.app.userapp.main.AppServer.main(AppServer.java:78)
Caused by: java.security.NoSuchAlgorithmException: der KeyStore not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at java.security.Security.getImpl(Security.java:695)
at java.security.KeyStore.getInstance(KeyStore.java:613)
... 6 more

更新:

作为对 Lolo 的回答,我在尝试保存 keystore 时没有得到 PKCS12JKS 格式。

enter image description here

最佳答案

答案在异常消息中:调用 KeyStore.getInstance() 时“der not find”意味着 der 不是您的 key 存储的已知格式。您应该尝试一种已知的格式,例如 JKS(Oracle JVM 的默认格式)或 PKCS12。看这个other post有关 keystore 格式的更多详细信息。

编辑:

如屏幕截图所示,您保存的文件是证书文件。假设您随后使用 Oracle 的“keytool”将其导入信任库并且未指定信任库格式,则应使用 Oracle JVM 的默认格式 JKS在您的代码中,而不是 der:

String keystoreType = "JKS";

关于java - NoSuchAlgorithmException : der KeyStore not available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29742636/

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