2011-04-27 90 views
1

我有使服務器端調用到另一個Web服務的代碼。在許多情況下,這是通過SSL。當星星不完全對齊時,我們遇到了問題,即失敗。我意識到必須信任證書,並且可能必須將內部證書頒發機構(CA)手動導入服務器上的受信任根證書存儲區。但是,還有其他的情況。今天我遇到了在那裏,如果我使用一個瀏覽器打網址我得到一個警告,說明一個問題,即:我可以編碼HTTP請求以解決SSL警告嗎?

安全證書的名稱無效或不匹配的站點名稱

這只是一個警告,您可以通過瀏覽器確認並告訴它繼續訪問該網站。

但是,它似乎阻止我的代碼工作。這裏是我的代碼的精簡版:

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
request.Credentials = new NetworkCredential(user, password); 
HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

在看着我HttpWebRequest沒有看到任何明顯的,這將有助於我了,我現在還沒有在我的開發環境中不斷嘗試新東西出來的奢侈品。是否有一個簡單的改變,我可以解決這個問題?還有其他類似的問題,我可以防止這種方式呢?

回答

1

柯克,你有沒有看過使用ServerCertificateValidationCallback,並簡單地返回true(作爲一個測試),然後擴大錯誤檢查的特殊情況?您還可以檢查出What is the best way of handling non-validating SSL certificates in C#其他一些信息上的檢查CER

工作液:

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
request.Credentials = new NetworkCredential(user, password); 
ServicePointManager.ServerCertificateValidationCallback = delegate(object certsender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error) 
{ 
    return true; 
} 
HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

SSLPolicyErrors見枚舉在委託審查。

+0

謝謝,皮特。我需要創建一個快速測試程序,交給客戶端,看看它是否有效。我可能需要一段時間才能做到這一點,但我會在一次嘗試後發佈回覆。 – 2011-04-28 15:58:07

+0

已驗證。這解決了這個問題。我編輯了您的迴應與代碼的作品。我認識到這不太安全,並且可以使其成爲可配置的選項,客戶可以選擇要覆蓋哪個SSLPolicyError。 – 2011-04-28 20:25:28

相關問題