Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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 UDP上的SSL:无法访问ICMP端口_Java_Ssl_Udp_Bouncycastle_Dtls - Fatal编程技术网

Java UDP上的SSL:无法访问ICMP端口

Java UDP上的SSL:无法访问ICMP端口,java,ssl,udp,bouncycastle,dtls,Java,Ssl,Udp,Bouncycastle,Dtls,我正在使用BouncyCastle通过UDP实现SSL。我有两个独立的JVM使用UDP相互通信。这些是独立的JVM,而不是任何类型的web或应用程序容器 我如何实现这一点 我使用过BouncyCastle中的测试类,但遇到了一个异常: Exception in thread "main" java.net.PortUnreachableException: ICMP Port Unreachable at java.net.PlainDatagramSocketImpl.send(Native

我正在使用BouncyCastle通过UDP实现SSL。我有两个独立的JVM使用UDP相互通信。这些是独立的JVM,而不是任何类型的web或应用程序容器

我如何实现这一点

我使用过BouncyCastle中的测试类,但遇到了一个异常:

Exception in thread "main" java.net.PortUnreachableException: ICMP Port Unreachable
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:697)
at org.bouncycastle.crypto.tls.UDPTransport.send(Unknown Source)
at org.bouncycastle.crypto.tls.DTLSRecordLayer.sendRecord(Unknown Source)
at org.bouncycastle.crypto.tls.DTLSRecordLayer.send(Unknown Source)
at org.bouncycastle.crypto.tls.DTLSReliableHandshake$RecordLayerBuffer.sendToRecordLayer(Unknown Source)
at org.bouncycastle.crypto.tls.DTLSReliableHandshake.writeHandshakeFragment(Unknown Source)
at org.bouncycastle.crypto.tls.DTLSReliableHandshake.writeMessage(Unknown Source)
at org.bouncycastle.crypto.tls.DTLSReliableHandshake.sendMessage(Unknown Source)
at org.bouncycastle.crypto.tls.DTLSServerProtocol.serverHandshake(Unknown Source)
at org.bouncycastle.crypto.tls.DTLSServerProtocol.accept(Unknown Source)

可能的原因是什么?我没有设置任何服务器。

“ICMP端口不可访问”-对等方不接受您发送到的端口上的任何数据。设置对等网络或防火墙时可能会遇到问题。通常,在确定基本通信正常工作之前,最好不要使用加密技术。因此,在这种情况下,请首先尝试使UDP正常工作,而不要使用任何DTL来混淆问题。我已尝试在不使用任何SSL的情况下使用UDP,并且工作正常。我是否需要为UDP启用端口,因为我认为如果其他程序未关闭这些端口,这些端口已经打开。TLS的一部分需要主机验证。否则,您将无法验证证书是否属于
myserver.myorganization.mywhateverbynow
。因此,协议的一部分将执行反向DNS查找。我在这里猜测,但这可能是失败的部分。确保你的DNS达到标准,使用主机名而不是IP地址。