当前位置: 代码迷 >> 综合 >> java.security.UnrecoverableKeyException: Cannot recover
  详细解决方案

java.security.UnrecoverableKeyException: Cannot recover

热度:50   发布时间:2023-12-17 17:44:31.0

转载:http://blog.csdn.net/qingkangxu/article/details/6095139

java.security.UnrecoverableKeyException: Cannot recover

分类: java基础   272人阅读  评论(0)  收藏  举报

写一个基于SSL的Socket Server端程序,代码很简单

 

[java]  view plain copy
  1. SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();  
  2. for(String cipher:ssf.getDefaultCipherSuites()){  
  3.     System.out.println("DefaultCipherSuite:" + cipher);  
  4. }  
  5. for(String cipher:ssf.getSupportedCipherSuites()){  
  6.     System.out.println("SupportedCipherSuite:" + cipher);  
  7. }  
  8. SSLServerSocket ss = (SSLServerSocket)ssf.createServerSocket(9999);  
  9. System.out.println("Waiting for connection...");  
  10. while (true) {  
  11.     Socket s = ss.accept();  
  12.     PrintStream out = new PrintStream(s.getOutputStream());  
  13.     out.println("Hi");  
  14.     out.close();  
  15.     s.close();  
  16. }  

 

 

2,java -Djavax.net.ssl.keyStore=server.jks -Djavax.net.ssl.keyStorePassword=123456 -Djavax.net.debug=all security.ssl.MySSLServer

居然出现default context init failed: java.security.UnrecoverableKeyException: Cannot recover

 

原来居然是:生成keystore的时候,别名密码和keystore的密码必须一致。比如如下:

keytool -genkey -keystore server.jks -storePass 123456 -alias server -keypass 123456

真是汗了,那keystore里面有多个别名怎么办,都要和keystore的密码一样,不知道jdk怎么想的,需要验证一下。

 

  相关解决方案