我的系统中安装了一台服务器。它使用其中一个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中的值。
任何人都可以对此提出一些建议。
谢谢..
答案 0 :(得分:0)
DNS名称由本地DNS服务器分配。名称localhost.localdomain
通常在主机文件中分配,因此各种本地操作功能(例如,系统日志记录,从定期任务向root用户发送电子邮件)。我猜你的服务器没有在本地DNS服务器上注册。本地运行的虚拟机实际上在DNS中实际上具有有效注册是很少见的 - 对于在Windows环境中运行的Linux系统尤其如此。
如果它在DNS中注册并且您的服务器和客户端都使用相同的DNS层次结构,那么您需要做的就是使用计算机的IP地址创建java.net.InetAddress
并调用{{1}检索其DNS名称。如果它没有在本地DNS服务器中注册的名称,那么您只需返回IP地址即可。