使用给定的IP地址查找DNS名称

时间:2012-06-03 11:42:27

标签: java url dns certificate

我的系统中安装了一台服务器。它使用其中一个IP地址并充当自己的系统。

在我的java程序中,我使用以下代码连接到该服务器。

ServiceInstance si = new ServiceInstance(new URL("https://10.100.13.36/sdk"), "user", "password", true);

true表示忽略证书为真。

当我尝试使用false参数执行时,它会显示以下错误。

CertificateException: No subject alternative names matching IP address 10.100.13.36 found

我到了这里,在服务器的证书模式下我必须使用dns名称而不是ip地址。

所以我在服务器配置设置中发现服务器将DNS名称作为localhost.localdomain

所以我尝试将网址设为https://localhost.localdomain/sdk

它显示了找不到localhost.locadomain的错误。

我认为DNS名称解析存在一些问题,localhost作为我的系统,localhost.localdomain作为我的服务器dns名称。

我们可以通过java程序找到提供ip地址的dns名称。所以它自己找到DNS名称并传递url中的值。

任何人都可以对此提出一些建议。

谢谢..

1 个答案:

答案 0 :(得分:0)

DNS名称由本地DNS服务器分配。名称localhost.localdomain通常在主机文件中分配,因此各种本地操作功能(例如,系统日志记录,从定期任务向root用户发送电子邮件)。我猜你的服务器没有在本地DNS服务器上注册。本地运行的虚拟机实际上在DNS中实际上具有有效注册是很少见的 - 对于在Windows环境中运行的Linux系统尤其如此。

如果它在DNS中注册并且您的服务器和客户端都使用相同的DNS层次结构,那么您需要做的就是使用计算机的IP地址创建java.net.InetAddress并调用{{1}检索其DNS名称。如果它没有在本地DNS服务器中注册的名称,那么您只需返回IP地址即可。