我有一个正在开发的服务器和一些连接到它的开发人员.该服务器使用Java的TLS实现SSLEngine.
我们看到,首先,每个新连接都会有很长的延迟(30-40秒).我们将其缩小以反转DNS查找超时.我们通过将所有IP放入HOSTS文件中来解决这个问题.
现在,问题是我们将逐步扩大我们的用户群,我不想编辑该HOSTS文件,特别是因为我们无法保证他们将拥有静态IP.
有没有办法在Java的SSL/TLS中禁用反向DNS查找步骤?
我想将此作为可配置参数,以便我们可以在开发期间将其关闭.
小智 11
当我尝试仅通过IP地址创建SSL套接字连接时,我今天遇到了同样的问题.这导致反向DNS查找尝试,因此它真的很慢......
对我来说,解决方案只是在为SSL连接创建InetAddress时传递一个虚拟空字符串作为主机名.也就是说,我改变了
InetAddress.getByAddress(addrBytes)
Run Code Online (Sandbox Code Playgroud)
至
InetAddress.getByAddress("", addrBytes)
Run Code Online (Sandbox Code Playgroud)
它不再进行反向DNS查找.
这个问题于 2006 年在Sun JSSE 论坛上提出。最重要的是,它似乎只发生在 Windows java 运行时。在此错误报告中,底部是一个建议的解决方案。这是另一个建议的解决方案:
基本上,SSL 握手期间的反向 DNS 查找会导致长时间超时。
要解决此问题,请将服务器地址缓存为 InetAddress 对象,并在每次与服务器建立新连接时在 Socket 构造函数中重用它。
希望其中之一对您有用。