Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 握手前如何写入SSLSocket?_Java_Ssl_Networking_Https - Fatal编程技术网

Java 握手前如何写入SSLSocket?

Java 握手前如何写入SSLSocket?,java,ssl,networking,https,Java,Ssl,Networking,Https,我试过了,但得到了javax.net.ssl.SSLException:收到致命警报:内部错误 如果我直接使用SSLSocket,它将在工厂工作。createSockethost,443 加: 我需要在握手之前添加自定义头,以实现自定义协议 地址2: 代码有效!如果我失败了,我在服务器上用SNI测试SSLSocket在TLS连接内传输数据。传输数据前需要建立TLS连接,即握手必须成功完成。因此,在握手完成之前写入SSLSocket没有意义,就像在TCP连接建立之前写入TCP套接字没有意义一样 添

我试过了,但得到了javax.net.ssl.SSLException:收到致命警报:内部错误

如果我直接使用SSLSocket,它将在工厂工作。createSockethost,443

加: 我需要在握手之前添加自定义头,以实现自定义协议

地址2:
代码有效!如果我失败了,我在服务器上用SNI测试SSLSocket在TLS连接内传输数据。传输数据前需要建立TLS连接,即握手必须成功完成。因此,在握手完成之前写入SSLSocket没有意义,就像在TCP连接建立之前写入TCP套接字没有意义一样

添加:我需要在握手前添加自定义头,以实现自定义协议


在添加了这些信息之后,这个问题就更有意义了。看起来您希望先交换未加密的数据,然后再升级到TLS,就像SMTP+STARTTLS中所做的那样。在这种情况下,您需要首先建立正常的TCP连接,然后将其升级到TLS。请参阅以了解如何完成后一部分。

您希望实现什么?Fildor,为自定义协议添加自定义标题look here:Fildor,it for server。我尝试使用客户端,但无论如何,您必须在客户端和服务器上使用。双方必须同时切换到TLS。实际上,两者的切换部分应该是相同的。我知道。我需要在握手之前添加自定义头,以便实现自定义协议。如果您的协议允许安全和不安全的通信,那么这是有意义的。如果您想在同一端口上处理这两个问题,您可以直接启动,一旦双方同意使用SSL/TLS,就可以启动TTLS。例如SMTP…Fildor,就是这样right@inter:在您更新问题后,我已更新了答案。谢谢,但请查看我的代码,就像您链接中的代码一样。它实际上不起作用
    Socket fromServer = new Socket("host", 443);

    SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
    SSLSocket sslsocket = (SSLSocket) factory.createSocket(fromServer, null, true);
    sslsocket.setUseClientMode(true);