java - 由 : java. security.UnrecoverableKeyException: 无法恢复 key 引起

标签 java ssl ssl-certificate jks

我得到了一个名为 ABCC_client.store 的 jks keystore 。当我将此 keystore 导入 cacerts 并尝试连接时,它说没有这样的算法错误。 PFA 堆栈跟踪

    Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class:   com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
    at java.security.Provider$Service.newInstance(Provider.java:1245)
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:220)
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:147)
    at javax.net.ssl.SSLContext.getInstance(SSLContext.java:125)
    at javax.net.ssl.SSLContext.getDefault(SSLContext.java:68)
    at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:102)
    at org.apache.axis.components.net.JSSESocketFactory.initFactory(JSSESocketFactory.java:61)
    at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:79)
    ... 32 more
Caused by: java.security.UnrecoverableKeyException: Cannot recover key
    at sun.security.provider.KeyProtector.recover(KeyProtector.java:311)
    at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:121)
    at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:38)
    at java.security.KeyStore.getKey(KeyStore.java:763)
    at com.sun.net.ssl.internal.ssl.SunX509KeyManagerImpl.<init>(SunX509KeyManagerImpl.java:113)
    at com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:48)
    at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:239)
    at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(DefaultSSLContextImpl.java:170)
    at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(DefaultSSLContextImpl.java:40)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at java.security.Provider$Service.newInstance(Provider.java:1221)
    ... 39 more

但是,如果我独立使用此 keystore ,即不将其添加到 cacerts 中,则它可以工作。

我在谷歌上搜索了一下 http://joewlarson.com/blog/2009/03/25/java-ssl-use-the-same-password-for-keystore-and-key/这表示 key 和 keystore 的密码可能不同。

最佳答案

如果使用 Tomcat 6 及更早版本,请确保 keystore 密码和 key 密码相同。如果使用 Tomcat 7 及更高版本,请确保它们相同或在 server.xml 文件中指定 key 密码。

关于java - 由 : java. security.UnrecoverableKeyException: 无法恢复 key 引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15967650/

相关文章:

.htaccess - htaccess 将 https ://www. example.net 重定向到 https ://www. example.com/members/

使用 Optimistic TLS 从 SendGrid 到 Office365 的电子邮件加密可靠性

封闭的音墙后面的网站的 SSL 证书?

java - Android Intent打开新 Activity 但没有关闭旧 Activity

java - 在我的代码中使 arraylist 可打包?

node.js - Socket.io SSL 错误

ssl - 如何通过 SSL 实现 RESTful 服务?

导入 SSL 证书后,Android Emulator 应用程序未连接到网络

java - 在 Java 中解析 HTML 数据,包括 &lt 和 &gt 标签?

java - 将 Apache POI 添加到 Eclipse