2011-05-23 74 views
7

好的我可能在使用WCF配置的雜草中變得太過分了,無法通過樹來看到森林,所以我想檢查安全性。使用傳輸安全性時需要WCF使用SSL嗎?

我有(2)在客戶端使用netTcpBinding和wsHttpBinding(都罰款和工作)選項的WCF服務中公開的綁定。我都配置了默認值:clientCredentialType =「Windows」。我有wsHttpBinding配置爲使用SSL證書,並通過https(我想要這個)公開端點,並且還有一個SSL證書配置netTcpBinding使用TCP上的SSL(我也想這樣做)。

這裏是我不斷收到混合信息。顯然,「傳輸」安全性始終是安全的。這是否意味着我做而不是需要SSL證書,然後如果我想保護傳輸層?

回答

8

我不得不在多篇文章之間進行大量閱讀以獲得我從原始文章中查找的詳細信息。幫助我澄清一點的信息如下:

每個協議(TCP,HTTP,MSMQ,NamedPipes)都有自己的機制來傳遞憑證和處理消息保護。

以上是從WCFSecurityGuide

從最初的Web後臺我有HTTP的一個很好的瞭解即將和一個SSL證書保護它。但是,在Windows環境中,對於net.tcp,在Windows中使用其自己的方法來保護傳輸層時,不需要此確切過程。

因此,當它下來到它,這裏是關於(2)explinations對確保一個HTTP綁定和的net.tcp在Windows環境下,我想明白了:

爲的net.tcp:服務和客戶端使用的Windows認證進行了認證,並且消息是由Windows安全

在傳輸級別安全對於HTTP結合(即的wsHttpBinding):當使用HTTP綁定,所述傳輸安全是由SSL提供。 SSL證書用於提供消息保護。

所以我會需要一個SSL證書的net.tcp綁定作爲由Windows安全處理,並使用傳輸安全時inheriently安全。當使用wsHttpBinding時,我仍然需要使用我之前提到的SSL證書來保護Transport,並通過HTTPS公開綁定。

如果任何未來的讀者也有類似的問題WCF指南鏈接我張貼和下面的鏈接是一個良好的開端:

常見WCF安全方案:
http://msdn.microsoft.com/en-us/library/ms730301.aspx

+1

好總結!爲了達到超清晰度,對這種配置的「消息保護」意味着建立一個加密通道(傳輸),通過該通道將消息傳輸到服務。該消息本身不是**加密的,因爲該通道是安全的,所以不需要加密。 WCF還具有消息級安全性(在此配置中未啓用**),該消息級對消息本身進行加密,以便它可以通過不安全的通道進行傳輸,或通過中間人進行傳輸而損害消息的內容。 – 2011-05-24 18:18:05

+0

謝謝!來自WCFSecurityGuid的一些信息(第127頁)詳細闡述了安全模式及其描述:**無**:未提供安全性;你不應該使用這個選項。 **傳輸**:在傳輸級別提供相互驗證和消息保護。 **消息**:在消息級別提供相互驗證和消息保護。 **兩者**:在傳輸和消息級別提供相互驗證和消息保護。這遠遠超過大多數場景所需要的。 – atconway 2011-05-24 21:09:56

+0

續... ** TransportWithMessageCredential **:客戶端身份驗證在消息級別提供,消息保護和服務身份驗證在傳輸級別提供。 ** TransportCredentialOnly **:在傳輸級別提供相互驗證,但不提供消息保護。 – atconway 2011-05-24 21:10:08

2

在此設置中,「傳輸」安全性是您如何告訴WCF您確實希望它使用SSL。爲了使SSL正常工作,您需要客戶端可以驗證的服務器證書(無論是來自簽名中心還是您在客戶端上安裝的自簽名服務器證書)。

所以你說得對。 :)

+0

感謝您的答覆,我很感激。我仍然有點困惑(我多次閱讀你的回覆);所以通過正確的做我*不*需要一個SSL證書,因爲它本質上是安全的或我需要它?我試圖追蹤一篇很好的MSDN文章(我現在大約有10篇文章正在打開),試圖解釋傳輸安全性及其與Windows證書安裝環境中的SSL安全性之間的關係。我想我有所有的鏈接,仍然試圖瞭解是否應用SSL(當需要安全性時)對我的設置有意義。謝謝! – atconway 2011-05-24 12:50:07

+0

我相信我對wsHttpBinding很清楚。爲了確保傳輸安全,您應該使用已配置的SSL證書通過https公開綁定。完成。如果這可以證實,我很好。我仍然困惑的地方在於net.tcp綁定。操作系統提供了一些我讀取此綁定安全性的地方(通過TCP實現傳輸層安全性(TLS)提供了傳輸模式的安全性,TLS實現由操作系統提供),其他人則表示:對於TCP,它是基於TCP或Windows的SSL。所以net.tcp綁定仍然有些混亂。 – atconway 2011-05-24 13:23:38

+2

您需要服務器證書才能使用SSL。證書是客戶如何知道他們從服務器獲得的消息是真正來自服務器的,並且在運輸過程中沒有被攔截和更改。 net.tcp正在使用TLS,如[此處]所述(http://msdn.microsoft.com/zh-cn/library/ms733089.aspx)。 – Tridus 2011-05-24 14:49:37