2012-06-18 119 views
0

我有IIS6運行的WCF服務,其配置與使用安全設置「有消息憑據傳輸」(設置爲「無傳輸客戶端憑據的WSHttpBinding 「和消息設置爲‘證書’,這是由通過汽車通過消耗VS 2010WCF - 從智能卡的X509證書 - 「無法驗證簽名」

在我的開發環境中的服務生成的代碼創建一個.NET客戶端消耗掉,我創建了一個證書行動作爲服務證書和IIS SSL證書,並且因爲我很懶,所以我導出了證書以供我的客戶端應用程序使用。在配置中一切都很好,但這不是目標環境。這個想法是讓用戶使用他們的智能卡來訪問這項服務不會在同一個域上,現在不允許使用LDAP。

問題是,現在我在測試實驗室得到了這個結果,並建立了SSL證書由用戶證書頒發的相同CA頒發的環境,並且我創建了自定義x509 Cert驗證程序和服務憑證,但在對我的驗證器進行初始調用之後,在切換之間發生了一些事情,並在服務跟蹤日誌中發出錯誤,指出「驗證消息安全性錯誤」,內部有「無法驗證簽名」異常。既然是通過我的自定義驗證程序,我得到了消息記錄,一切都看起來很好的SOAP端,我從另一邊獲得證書。我已經確定,我試圖使用的每個證書都在「受信任用戶」商店中,甚至試圖導出證書並將其放入本地計算機「個人」商店,但沒有運氣。

我有一種感覺,我不完全瞭解使用該服務證書,並在web.config文件中的客戶端證書。有人可以幫我在這裏嗎?

回答

0

好吧,我已經設法回答我自己的問題,來自我的同事的一些幫助。在我們一起坐下來開始運行一堆問題並進行一些隨機的谷歌搜索之後,我們決定改變配置中的一些讓我感到驚訝的東西。

所以要完成我的問題往上頂,我必須設置爲「證書」與加密算法套件設置爲「TripleDesSha256Rsa15」的消息憑證。結果證明智能卡上的證書或卡本身只支持Sha1(這不是其他所有選項的選項)。當我們將設置更改爲「Basic256」時,一切開始工作。我最終能夠將其設置爲「TripleDesRsa15」,並繼續工作。

基本上,WCF無需私鑰就可以發送證書,因爲它無法使用該加密算法對其進行訪問。 WCF 拋出這個異常試圖訪問該證書時,它只會丟在與異常「無法驗證簽名」服務器端。有點希望它會說「沒有簽名」,因爲那樣會比較容易追蹤。我不知道是否有人會發現這個有用的,但如果你這樣做,並可以找到一個參考「正確」的方式與WCF使用智能卡,請張貼與裁判。

總體而言,請檢查您要使用你的加密算法,並確保它的工作原理與智能卡/你計劃使用證書。