2017-05-06 17 views
0

javaでSSLクライアントを作成したい。クライアントの秘密鍵と公開鍵を使用してclient.crtJavaのSSLクライアント

: 1.サーバーの公開鍵:CAfile.pem 2.クライアントの秘密鍵:にclient.pem 3.クライアントの公開鍵I、すなわちSSLサーバが提供する3つのファイルを持っています私はpkcs12ファイルである1つのキーストアを作成し、サーバーの公開鍵を使用してJKSファイルである1つのtruststoreを作成しました。 その後、私は設定しています次のシステム・プロパティ:

System.setProperty("javax.net.ssl.keyStoreType","pkcs12");        
System.setProperty("javax.net.ssl.keyStore",<keystorepath>); 
System.setProperty("javax.net.ssl.keyStorePassword",<password>); 
System.setProperty("javax.net.ssl.trustStoreType","jks"); 
System.setProperty("javax.net.ssl.trustStore",<truststorepath>);       
System.setProperty("javax.net.ssl.trustStorePassword",<password>); 

そして、TLSハンドシェイクのための私のコードの一部である:

System.setProperty("jsse.enableSNIExtension", "false"); 
SSLContext ctx = SSLContext.getInstance("TLS"); 
ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()},  new SecureRandom()); 
SSLContext.setDefault(ctx); 

SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); 
sslSocket = (SSLSocket) factory.createSocket(socket,socketHost,port,true); 
sslSocket.setSoTimeout(timeout); 
sslSocket.startHandshake(); 

しかし、握手をしている間、私は次のエラーを取得しています。

java.net.SocketException: Software caused connection abort: recv failed 
at java.net.SocketInputStream.socketRead0(Native Method) 
at java.net.SocketInputStream.read(SocketInputStream.java:152) 
at java.net.SocketInputStream.read(SocketInputStream.java:122) 
at sun.security.ssl.InputRecord.readFully(InputRecord.java:442) 
at sun.security.ssl.InputRecord.read(InputRecord.java:480) 
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927) 
at sun.security.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1705) 
at sun.security.ssl.HandshakeOutStream.flush(HandshakeOutStream.java:122) 
at sun.security.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:972) 
at sun.security.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:1087) 
at  sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:1006) 
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:285) 
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) 
at sun.security.ssl.Handshaker.process_record(Handshaker.java:804) 
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016) 
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) 
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) 
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) 
at com.integra.socket.TestSocket.connectToSocket(TestSocket.java:107) 
at com.integra.socket.TestSocket.main(TestSocket.java:57) 

助けてください。あなたが提供する情報と

おかげ

答えて

0

は問題がherehereherehereを報告したものと同様であると思われます。

関連する問題