-1

我的系统中安装了一台服务器。它采用其中一个 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

所以我尝试使用 url 作为https://localhost.localdomain/sdk

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

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

我们可以通过java程序找到带有ip地址的dns名称吗?这样它就可以自己找到DNS名称并在url中传递值。

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

谢谢..

4

1 回答 1

0

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

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

于 2012-06-03T12:13:52.810 回答