SSL сокет общение с сервером epp
Я внедряю клиент в Java, который соединяется с сервером EPP через TCP и SSL.
Мне нужно было отправить некоторые xml-ы на сервер через SSL и прочитать некоторые ответы xml. У меня нет сертификата клиента, и я не нуждаюсь в нем. Мне просто не нужно было отправлять запросы на этот сервер и читать ответы. Я совершенно новичок в этой теме.
Мой код такой:
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("server.epp.si", 65000);
DataOutputStream outToServerSSL = new DataOutputStream(sslsocket.getOutputStream());
BufferedReader inFromServerSSL = new BufferedReader(new InputStreamReader(sslsocket.getInputStream()));
outToServerSSL.write(somXML.getBytes());
inFromServerSSL.readLine();
Это не зависит от того, какую строку я поместил в xml, я всегда получаю один и тот же откровенный ответ xml.
Теперь мне интересно, если даже SSL Hanshake прошел нормально. Как это можно проверить, соединение успешно установлено и приемник готов к приему данных. Так что я исключаю саму проблему с подключением.
2 ответа
Стандартный EPP определен так, чтобы всегда отправлять приветствие при подключении к серверу, поэтому в приведенном выше коде вы пишете свою команду на сервер, но входной буфер уже будет иметь приветствие, так что это то, что вы получите при чтении ответ.
Правильный поток выглядит следующим образом
- Подключение к серверу EPP через SSLSocket
- Прочитать приветствие из потока ввода
- Отправить команду входа
- Прочитайте ответ на вход
- Отправьте свою команду EPP
- Прочитайте ответ на ваши команды
- Повторяйте шаги 5 и 6, пока не сделаете все необходимое
- Отправить команду выхода
- Прочитайте ответ выхода
- Закройте розетку
Вы можете отлаживать связь при запуске вашего проекта с
java -Djavax.net.debug=all
,
Вы можете увидеть все рукопожатие, оно должно закончиться
*** Finished
verify_data:...
****
а затем некоторые простые и зашифрованные данные.