客户端使用SSLSocket,服务端操作SSLEngine建立非阻塞监听,采用keytool产生认证文件。
SSLcontext通过init(KeyManager[] km, TrustManager[] tm, SecureRandom random) 来构建
SSLSocket调用startHandshake()时报错
javax.net.ssl.SSLProtocolException: Illegal client handshake msg, 1
at com.sun.net.ssl.internal.ssl.Handshaker.checkThrown(Handshaker.java:1003)
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:459)
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1054)
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1026)
at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:411)试了很多办法都不行,密码一定是对的,用户也都导入了,请问这个错误一般是什么原因
还是认证文件的问题么?求教

解决方案 »

  1.   

    服务器证书导入客户端TrustManager,相反,客户端证书导入服务器TrustManager
      

  2.   


    char[] passphrase = "11111111".toCharArray();
    KeyStore keystore = KeyStore.getInstance("JKS");
    keystore.load(new FileInputStream(".keystore"), passphrase);TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
    tmf.init(keystore);SSLContext context = SSLContext.getInstance("TLS");
    TrustManager[] trustManagers = tmf.getTrustManagers();
    context.init(null, trustManagers, null);SSLSocketFactory sf = context.getSocketFactory();
    Socket s = sf.createSocket(HOST, PORT);
      

  3.   

    希望知道 Illegal client handshake msg, 1
     是什么原因引起的