Java 正在查找具有给定ip地址的DNS名称

Java 正在查找具有给定ip地址的DNS名称,java,url,dns,certificate,Java,Url,Dns,Certificate,我的系统中安装了一台服务器。它使用其中一个ip地址并充当自己的系统 在我的java程序中,我使用以下代码连接到该服务器 ServiceInstance si = new ServiceInstance(new URL("https://10.100.13.36/sdk"), "user", "password", true); true表示忽略证书为true 当我尝试使用false参数执行时,它显示以下错误 CertificateException: No subject alternativ

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

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

ServiceInstance si = new ServiceInstance(new URL("https://10.100.13.36/sdk"), "user", "password", true);
true表示忽略证书为true

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

CertificateException: No subject alternative names matching IP address 10.100.13.36 found
在服务器的证书模式下,我必须使用dns名称而不是ip地址

因此,我在服务器配置设置中发现服务器使用的DNS名称为localhost.localdomain

因此,我尝试将url作为

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

我猜它在DNS名称解析方面有一些问题,将localhost作为我的系统,将
localhost.localdomain
作为我的服务器DNS名称

我们可以通过java程序找到给定ip地址的dns名称,以便它自己找到dns名称并在url中传递值

有人能给我一些建议吗


谢谢。

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


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

此服务器是您桌面上运行的虚拟机吗?另外,您在桌面和虚拟机上使用的是什么操作系统?@JasonNichols是的,我使用的是安装在vmware workstation上的windows 7操作系统和vmware esxi服务器。我最初将www.cabc.com作为匹配项放在系统的主机文件中。现在它将输出显示为www.cabc.com………但我需要的是获取vmware服务器为此分配的DNS名称ip地址(10.100.13.36)我猜我的vmware服务器只从专用网络获取ip地址,并为自己分配自己的dns名称。其他任何系统都不知道它。甚至我的计算机也独立于vmware服务器。因此,给定dns名称java程序无法找到服务器。但给定ip名称(从ip地址池中提取)我们可以ping ip地址10.100.13.36。此程序成功运行。我认为此任务无法实现。此任务未实现。但我的主要证书任务已完成。