2012-06-03 144 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