Как получить данные сокета SSL в Java? - PullRequest
0 голосов
/ 16 сентября 2018

Итак, я только что прочитал этот пост, и он сказал, что вам нужно сделать сокет SSL следующим образом:

SocketFactory factory = SSLSocketFactory.getDefault();
Socket socket = factory.createSocket("computerName", 2282);

Так что я подумал, что это не сработает, потому что это казалось слишком легким, но на самом деле это не вызывало ошибки. Он подключился к моему серверу, который в данный момент использует обычное сокетное соединение, но никогда не показывал, что получил от него данные, просто подключился. Вот код для каждого:

Клиент

SocketFactory factory = SSLSocketFactory.getDefault();
Socket socket = factory.createSocket("computerName", 2282);
DataOutputStream outputData = new DataOutputStream(socket.getOutputStream());
outputData.writeUTF("1"));
DataInputStream inputData = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
String returnData = inputData.readUTF();

Сервер:

Socket socket = server.accept();
DataInputStream inputData = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream outputData = new DataOutputStream(socket.getOutputStream());
String incomingData = inputData.readUTF();
System.out.println("Received: " + incomingData);
String[] receivedDataArray = incomingData.split("\\s+");
// "1" occurs when the client pings the server.
if (receivedDataArray[0].equals("1"))
    outputData.writeUTF("1");

Есть идеи, почему он так себя ведет и как я могу это исправить?

1 Ответ

0 голосов
/ 17 сентября 2018

Это не будет работать.Поскольку вы не используете SSLServerSocketFactory для создания сокета сервера.Есть несколько вещей, которые вы должны установить в первую очередь перед установкой защищенного соединения, например, версия CLSpherSuite TLS и т. Д.

Для настройки параметров безопасности необходимо создать SSLContext, а затем создать сокет сервера

 SSLContext sc = SSLContext.getInstance("TLSv1.3");
    sc.init(null, trustAllCerts, new SecureRandom());
    SSLServerSocket ssl = (SSLServerSocket) sc.getServerSocketFactory().createServerSocket(
            YOURPORTNUMBER);

Еще одна вещь, ваш IdentityStore и trustStore должны быть правильно настроены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...