Java UDP上的SSL:无法访问ICMP端口
我正在使用BouncyCastle通过UDP实现SSL。我有两个独立的JVM使用UDP相互通信。这些是独立的JVM,而不是任何类型的web或应用程序容器 我如何实现这一点 我使用过BouncyCastle中的测试类,但遇到了一个异常: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
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地址。