ClientCredentialType證書驗證模式---- PeerTrust驗證模式
當證書驗證模式設置為“PeerTrust”時,服務端或者客戶端會驗 證證書是否存在於TrustedPeople 證書存儲區中。
修改配置文件采用“PeerTrust”驗證模式如以下代碼。
在服務端設置對客戶端的驗證模式設置為“PeerTrust”:
<clientCertificate > <certificate findValue="XuanhunClient" storeLocation="CurrentUser" storeName="My" x509FindType="FindBySubjectName"/> <authentication certificateValidationMode="PeerTrust" trustedStoreLocation="CurrentUser" /> </clientCertificate>
在客戶端設置對服務端驗證模式設置為“PeerTrust”:
<serviceCertificate > <defaultCertificate x509FindType="FindBySubjectName" storeLocation="CurrentUser" storeName="My" findValue="XuanhunServer" /> <authentication certificateValidationMode="PeerTrust" /> </serviceCertificate>
在運行程序之前,先來看看前面生成的證書目前存放在哪裡。啟動mmc控制台 ,添加新的管理單元,選擇證書,然後添加當前用戶和本地計算機兩個節點,如 圖11-14所示。
圖11-14 添加證書管理單元
添加管理單元之後,查看當前用戶下的各類證書,如圖11-15所示。
圖11-15 查看證書
在圖11-15中可以看到,生成的證書“XuanhunClient”和 “XuanhunServer”在當前用戶的個人存儲區中,不在受信任人的存儲 區中。
運行服務端和客戶端,在客戶端報出異常,如圖11-16所示。
圖11-16 證書不在被信任人存儲區中
從圖11-16中的異常信息可以明顯地看出,如果證書不在受信任人的存儲區中 ,采用“PeerTrust”驗證模式時是無法通過驗證的。有沒有辦法將這 兩個證書放到受信任人的證書存儲區中呢?其實很簡單,只需要在證書管理單元 中將兩個證書拖拽到受信任人存儲區中即可,如圖11-17所示。
圖11-17 將證書添加到受信任人存儲區
現在運行程序,是不是就可以通過驗證了呢?還不行,不要忘記修改配置文件 中的“storeName”屬性為“TrustedPeople”。
修改客戶端“storeName”屬性:
<clientCertificate findValue="XuanhunClient" storeLocation="CurrentUser" x509FindType="FindBySubjectName" storeName="TrustedPeople"/>
修改服務端“storeName”屬性:
<serviceCredentials > <serviceCertificate x509FindType="FindBySubjectName" storeLocation="CurrentUser" storeName="TrustedPeople" findValue="XuanhunServer" /> … </serviceCredentials>
運行測試程序,結果如圖11-18所示。
圖11-18 “PeerTrust”驗證模式運 行結果
圖11-18 所示為客戶端顯示的結果,說明客戶端和服務端的證書已經通過相互 驗證。
------------------------------注:本文部分內容改編自《.NET 安全揭秘 》
作者:玄魂
出處:http://www.cnblogs.com/xuanhun/
查看本欄目