2012-06-03 102 views
-1

我在我的系统中安装了一台服务器。它采用其中一个IP地址并充当自己的系统。查找给定IP地址的DNS名称

在我的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

,所以我的URL尝试作为https://localhost.localdomain/sdk

服务器配置设置发现它已表明localhost.locadomain有错误未找到。

我想它与本地主机的DNS名称解析有一些问题,因为我的系统和localhost.localdomain作为我的服务器DNS名称。

我们可以通过java程序找到给出ip地址的DNS名称,以便它自己找到DNS名称并将该值传递给URL。

有没有人可以对此提出一些建议。

谢谢..

+1

此服务器是否在桌面上运行虚拟机? –

+1

另外,你在桌面和虚拟机上使用什么操作系统? –

+0

@JasonNichols是的,我正在使用Windows 7操作系统和vmware工作站上安装的vmware esxi服务器。 – user533

回答

0

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

如果它是在DNS中注册的,并且您的服务器和客户端都使用相同的DNS层次结构,那么您所需要做的就是使用机器的IP地址创建一个java.net.InetAddress,并调用getCanonicalHostName()来检索其DNS名称。如果它没有在本地DNS服务器上注册的名称,那么您将简单地获取IP地址。

+0

我首先将www.cabc.com作为我系统的主机文件中的匹配项。现在它将输出显示为www.cabc.com .........但我需要的是获取分配的DNS名称由vmware服务器为这个ip地址(10.100.13.36) – user533

+0

我想我的vmware服务器只接受来自专用网络的ip地址并为自己指定了自己的dns名称,并且它对任何其他系统都是未知的。即使我的电脑是独立的因此这就是为什么给一个DNS名称的Java程序无法找到服务器。但给定一个IP名称(因为它是从IP地址池中取得的),我们可以ping通IP地址10.100.13.36。与此程序运行成功。我脑海中想的是这个任务无法实现。 – user533

+0

这个提到的任务没有实现。但是我的证书主要任务是完成的。 – user533