首页 > 解决方案 > 我尝试使用 s_client (openssl) 和 javax.net.ssl 包连接到加密套接字

问题描述

我尝试使用 s_client (openssl) 和 javax.net.ssl 包连接到加密套接字。

s_client 可以工作,但可能不适用于非 root 的 android,这就是为什么我尝试了 javax.net.ssl 包但我收到以下错误:

java.net.SocketException:套接字已关闭或损坏

另外,什么是“NaiveTrustManager()”?( https://github.com/maruohon/JavaIRC )

package SSLSocketClient;
import java.io.*;
import java.net.*;
import javax.net.ssl.*;
public class SSLSocketClient{
public static void main(String[] args) {
SSLSocketFactory f = 
(SSLSocketFactory)SSLSocketFactory.getDefault();
  try {
     SSLSocket s =
       (SSLSocket) f.createSocket("localhost", 6697);

     s.startHandshake();

BufferedReader reader = new BufferedReader (new 
InputStreamReader(s.getInputStream()));

BufferedWriter writer = new BufferedWriter(new 
OutputStreamWriter(s.getOutputStream()));

BufferedReader in = new BufferedReader(
new InputStreamReader(
s.getInputStream()));

String line;

while ((line = in.readLine()) != null) {
System.out.println(line);
}

s.close();


  } catch (IOException e) {
     System.err.println(e.toString());
  }
  }

标签: socketssslopenssl

解决方案


我通过接受 Java 中的自签名 SSL 证书解决了这个问题。

http://howardism.org/Technical/Java/SelfSignedCerts.html


推荐阅读