2012-06-29 53 views
8

嘗試爲我們的Intranet的Web服務站點設置自簽名證書。證書本身顯示它是「OK」,但是當試圖從Web服務調用一個方法時,它會引發錯誤,並且在添加Web引用時它會給出警告。自簽名證書。底層連接已關閉:無法建立信任關係

下面是步驟和一些截圖,以確保我提供準確的信息。

Windows server 2003. IIS。該網站是 「WebServices.companyName.vmc」

1

下面是該網站

2

來自服務器的主機頭,它顯示的證書是 'OK'。

enter image description here

下面是一些網站的設置

enter image description here


現在,在Visual Studio 2008,添加Web引用

enter image description here

點擊「是」,在彈出的

enter image description here

點擊這個彈出,連續幾次「不」。

enter image description here

的代碼運行線路,調用Web服務後...我得到這個錯誤

基礎連接已關閉:無法爲SSL信任 關係/ TLS安全通道。

當web服務的網站在瀏覽器中,通過地址欄的小墊鎖,提供了這樣的信息:

enter image description here


這裏是我現有的代碼:

Dim mySvc As New WebServices.InstantAccount 
mySvc.calledFunction() 


編輯

對於有類似問題的人,請閱讀這兩個iamkrillin的答案,我的答案......因爲他們是解決問題的正反兩種不同的方式......這取決於一部分,你可以控制(代碼或證書)。

+0

也許這將幫助你http://stackoverflow.com/questions/703272/could-not-establish-trust-relationship-for-ssl-tls-secure-channel-soap – daniloquio

+0

我看了那個帖子之前,我已經確認了一些東西,比如DNS視線,認證證書仍然有效,日期是正確的......但其餘的一點都超出了我的意思。這就是爲什麼我張貼這麼多的截圖。 – adam

+0

如果我猜的話,我會說「•您是從證書使用正確的名字嗎?」是一個檢查的好地方。但我不知道如何檢查。 – adam

回答

11

您創建服務客戶端之前添加這行代碼的某個地方。

ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true); 

待辦事項:這將導致您的應用程序來接受所有無效的證書,只是不停地往前走。如果這是不可接受的,你可以附加一個功能,並進行處理,以確定證書錯誤是否正確

+0

你是天才!非常感謝!!! – adam

1

iamkrillin確實有一個工作解決方案,因爲他的代碼將忽略無效的證書,並允許應用程序使用Web服務。

除了這個,我已經改正了證書,使我不再需要忽略無效的證書。

主機標頭值(在OP中顯示)是WebServices.mycompany.vmc,但證書的「Common Name」或「Friendly Name」(顯示在「認證路徑」的OP屏幕截圖3中)是WebServices。

的通用名稱,網站網址需要匹配。我重新創建自簽名的證書與「WebServices.mycompany.vmc」的一個共同的名字,現在證書錯誤消失。 Web服務可供使用,而不需要編碼器忽略了應用程序無效證書。

相關問題