自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WCF X.509證書驗證提高安全級別

開發(fā) 開發(fā)工具
今天我們將會在這里為大家詳細(xì)介紹一下有關(guān)WCF X.509證書驗證的應(yīng)用方法,希望本文介紹的內(nèi)容可以給大家?guī)硪恍椭?/div>

WCF中,有一種驗證機(jī)制是通過證書來進(jìn)行的。這種安全機(jī)制可以為我們打造一個安全性非常高的解決方案。在這篇文章中,我們將會為大家詳細(xì)介紹一下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ù)運(yùn)行時會抱錯。

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

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

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

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

上述第1步,涉及到IIS的應(yīng)用,不是本文重點,相信玩過IIS和證書頒發(fā)機(jī)構(gòu)的朋友都不陌生,不做敘述了。第2步的中獲取證書也是比較容易的,配置證書就比較麻煩,新證書一般默認(rèn)安裝到本機(jī)的Current_User\My下,非系統(tǒng)管理員無法獲取其私鑰,而WCF客戶端又需要獲取該證書私鑰以向服務(wù)端證明自己的身份,而且WCF客戶端運(yùn)行時使用的是非本機(jī)管理員帳號,這就導(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的進(jìn)程,這樣設(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ù)時如果沒有證書,就會抱錯,目的基本達(dá)到。

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

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2013-08-30 10:54:53

2009-02-23 20:31:31

計算機(jī)英語短文X.509

2010-04-14 09:38:49

Windows SerIE安全級別

2009-09-04 16:21:37

Ruby on Rai

2013-07-18 11:00:59

山石網(wǎng)科

2011-12-09 09:31:58

桌面虛擬化

2022-03-18 10:23:11

元宇宙ARVR

2022-08-16 12:09:21

身份驗證MFA

2013-04-25 10:11:12

托管虛擬桌面HVDGartner

2013-10-22 10:24:05

2009-12-22 18:52:06

WCF安全性

2011-08-19 12:17:46

2010-09-16 09:33:14

無線路由器

2015-07-28 14:00:46

云整合云安全

2011-08-11 11:08:09

2017-12-08 21:26:52

物聯(lián)網(wǎng)DDI安全性

2018-09-12 08:22:13

2020-04-01 11:38:13

物聯(lián)網(wǎng)安全微分段IOT

2009-11-16 16:25:36

2016-06-03 10:32:53

點贊
收藏

51CTO技術(shù)棧公眾號