2008-10-09 79 views
6

沒有驗證可以傳輸安全嗎?我很清楚它的缺陷,但atm我不能在客戶端安裝證書。 看來我可以設置WSHttpBinding.SecurityMode到運輸和ClientCredentialType到HttpClientCredentialType.None,但是當我嘗試調用服務我得到這個異常:同時使HTTP請求https://[MyService]發生沒有驗證的WCF傳輸安全

錯誤。這可能是由於在HTTPS情況下服務器證書未使用HTTP.SYS正確配置。這也可能是由於客戶端和服務器之間的安全綁定不匹配造成的。

我不認爲這是客戶端和服務器之間的安全綁定不匹配,因爲我使用由svcutil生成的代理。

如果我已將ClientCredentialType設置爲None,它爲什麼會尋找服務器證書?

+0

除了我下面的回答,如果你希望依靠像ISA服務器這樣的東西來執行HTTPS加密,而不是承載你的web服務的IIS服務器,還有其他障礙。如果這是你的要求,那麼最好進入一個新的問題。 – 2008-10-10 00:32:03

回答

6

您可以在沒有身份驗證的情況下進行HTTPS通信,但由於HTTPS加密使用證書,因此無法使用證書進行HTTPS通信。

有幾件事情要檢查:

  1. 您可以訪問WSDL或其他資源,在網站上通過HTTPS在瀏覽器?
  2. 當您這樣做時,您是否收到關於證書的任何警告?

如果您無法通過HTTPS訪問站點上的WSDL或其他資源,則服務器上未配置HTTPS。

如果您收到關於證書的警告,那麼您沒有客戶端將信任的證書。這裏有三種選擇。一個是從Verisign之類的地方獲得一個有效的證書,這個證書將被信任,另一個是將證書安裝在用戶商店的一個可信任部分(你不能像你提到的那樣),最後是關閉客戶端WCF配置中的證書撤銷。

1

你設置的東西看起來正確,你想要什麼。

我認爲問題與確保傳輸級別安全性(HTTPS)所需的證書與驗證所需的任何證書之間的差異有關。

要執行傳輸級別安全性,您需要配置IIS服務器的證書以用於其加密。這絕不是用於識別WCF通信中的各方,只是爲了確保通信安全。 (用於此HTTPS傳輸的證書也用於標識服務器,但與WCF標識無關)

以下是指向blog post的鏈接,說明如何在IIS中爲此設置證書。不一定是最好的谷歌必須提供的,只是我發現的第一個涵蓋所有重要的點。 MSDN也應該詳細介紹這一點。

+0

服務器證書_is_用於向客戶端標識服務器。如果證書上的公用名稱與客戶端連接的URL不匹配,則默認操作是中止連接。 – 2012-07-17 19:51:18

+0

@JeremyWiebe乾杯 - 我的意思是在WCF溝通的背景下舉辦派對。我會澄清的。 – 2012-07-17 20:10:07