【问题标题】:ssl socket communicatoin to an epp serverssl socket 与 epp 服务器通信
【发布时间】:2014-02-25 11:47:11
【问题描述】:

我正在用 java 实现一个客户端,它通过 TCP 和 SSL 与 EPP 服务器通信。

我需要通过 SSL 向服务器发送一些 xml-s 并读取一些 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 是否正常。如何检查连接是否成功建立以及接收方是否已准备好接收数据。这样我就排除了连接问题本身。

【问题讨论】:

    标签: java xml sockets ssl epp


    【解决方案1】:

    标准 EPP 被定义为始终在连接到服务器时发送问候语,因此在上面的代码中,您正在将命令写入服务器,但输入缓冲区已经打开了问候语,所以这就是您将返回的内容阅读回复时。

    正确的流程如下

    1. 通过 SSLSocket 连接到 EPP 服务器
    2. 从输入流中读取问候语
    3. 发送登录命令
    4. 读取登录响应
    5. 发送您的 EPP 命令
    6. 阅读对命令的响应
    7. 重复步骤 5 和 6,直到您完成所有必要的操作
    8. 发送注销命令
    9. 阅读注销响应
    10. 关闭套接字

    【讨论】:

    • 并且确保在每个步骤中测试错误。我见过太多客户端实现只是按顺序发送内容,而没有注意读取服务器回复,特别是返回码。
    【解决方案2】:

    您可以在运行项目时调试通信

    java -Djavax.net.debug=all.

    你可以看到整个握手,它应该以

    结尾

    *** Finished verify_data:... ****

    然后是一些普通和加密的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      相关资源
      最近更新 更多