日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
WCFX.509證書驗證提高安全級別

在WCF中,有一種驗證機制是通過證書來進行的。這種安全機制可以為我們打造一個安全性非常高的解決方案。在這篇文章中,我們將會為大家詳細介紹一下WCF X.509證書驗證的相關(guān)應(yīng)用方法。#t#

最近在配WCF X.509證書驗證,我想在服務(wù)端實現(xiàn)SSL加密,然后當(dāng)客戶端調(diào)用服務(wù)時,需要出示自己的數(shù)字證書以證明自己是合法的用戶。配置過程很麻煩,不像書上說的那樣。我總結(jié)了一下有如下幾點需要注意。

在IIS部分,對于有服務(wù)器證書的WCF服務(wù)站點,可以要求SSL連接,128位加密,但是不能要求客戶端證書。在WCF服務(wù)部分,不能使用wsDualHttpBinding,應(yīng)為它一個通道SSL,另一個通道不能保證安全,在服務(wù)運行時會抱錯。

配置過程大致有以下幾步:

1。配置IIS SSL服務(wù)器證書

2。獲取并設(shè)置客戶端證書

3。配置WCF的服務(wù)端和客戶端

上述第1步,涉及到IIS的應(yīng)用,不是本文重點,相信玩過IIS和證書頒發(fā)機構(gòu)的朋友都不陌生,不做敘述了。第2步的中獲取證書也是比較容易的,配置證書就比較麻煩,新證書一般默認安裝到本機的Current_User\My下,非系統(tǒng)管理員無法獲取其私鑰,而WCF客戶端又需要獲取該證書私鑰以向服務(wù)端證明自己的身份,而且WCF客戶端運行時使用的是非本機管理員帳號,這就導(dǎo)致了WCF會報出無法找到證書的錯誤。解決這個問題,我們需要使用名為“Windows HTTP 服務(wù)證書配置工具”(WinHttpCertCfg.exe) 的工具為證書指定權(quán)限。該工具包含在Windows Server 2003 Resource Kit Tools可以到微軟下載,地址是:http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96eeb18c4790cffd&displaylang=en 下載好后在命令行類似下面的命令

WinHttpCertCfg.exe -g -c CURRENT_USER\MY -s "Issued_To_name" -a DOMAIN\account

就是說給account帳號賦予獲取私鑰的權(quán)限,可用ASPNET,NETWORKSERVICE等,-s后面是要搜索的條件。在分配完權(quán)限后,最好關(guān)掉IIS的進程,這樣設(shè)置生效比較快 ,同樣我們也需要配置服務(wù)所需的WCF X.509證書驗證。

做完了第2步,第3步就好辦了,貼一下我的配置服務(wù)端

 
 
 
  1. < behaviors> 
  2. < serviceBehaviors> 
  3. < behavior name="MemberServiceBehavior"> 
  4. < serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"> 
  5. < serviceDebug includeExceptionDetailInFaults="false"/> 
  6. < serviceCredentials> 
  7. < serviceCertificate storeName="My" storeLocation="LocalMachine" 
    x509FindType="FindBySubjectName"   
  8. findValue="membershipapi"/> 
  9. < /serviceCredentials> 
  10. < /behavior> 
  11. < /serviceBehaviors> 
  12. < /behaviors> 
 
 
 
  1. < bindings> 
  2. < wsHttpBinding> 
  3. < binding name="wsHttpCredentialBinding"> 
  4. < security mode="TransportWithMessageCredential"> 
  5. < transport clientCredentialType="Certificate"/> 
  6. < message clientCredentialType="Certificate" /> 
  7. < /security> 
  8. < /binding> 
  9. < /wsHttpBinding> 
  10. < /bindings> 

客戶端

 
 
 
  1. < behaviors> 
  2. < endpointBehaviors> 
  3. < behavior name="clientCredentialBehavior"> 
  4. < clientCredentials> 
  5. < clientCertificate storeName="My" storeLocation="CurrentUser" 
    findValue="MemberApiClient" x509FindType="FindBySubjectName" /> 
  6. < serviceCertificate> 
  7. < authentication certificateValidationMode="ChainTrust"/> 
  8. < /serviceCertificate> 
  9. < /clientCredentials> 
  10. < /behavior> 
  11. < /endpointBehaviors> 
  12. < /behaviors> 

我這樣的配置雖然客戶端在不提供WCF X.509證書驗證的情況下仍然能夠看到服務(wù)的元數(shù)據(jù)終結(jié)點(主要是因為IIS沒有配置為要求客戶端證書),但是在調(diào)用服務(wù)時如果沒有證書,就會抱錯,目的基本達到。

最后我想說一下,書上講authentication certificateValidationMode配置為PreeTrust比較好,只要在信任的人的列表里就可以通過驗證,可是經(jīng)過我的試驗似乎不是這樣,在我的客戶端和服務(wù)中,authentication certificateValidationMode值配置為PreeTrust或ChainTrust沒有什么區(qū)別,客戶端都需要將證明自己的WCF X.509證書驗證找出來,提供給服務(wù),不然就要抱錯。


網(wǎng)站標題:WCFX.509證書驗證提高安全級別
瀏覽地址:http://www.dlmjj.cn/article/cciigsg.html