基於SSL的WCF對客戶端採用證書驗證?

Tags: 證書, 客戶端,

WCF安全驗證之證書驗證

工具/原料

VS2010

IIS

方法/步驟

創建根證書

我們首先創建一個證書作為證書認證中心(CA)的根證書,我們利用MakeCert命令創建。在“開始”菜單中打開—>Microsoft Visual Studio 2010->Visual Studio 命令提示(win7請用管理員身份打開)。如圖1

輸入:makecert -n "CN=RechargeCA" -r -sv D:\RechargeCA.pvk D:\RechargeCA.cer

(證書中三種常用的文件格式:.pvk 文件:私鑰文件;.cer 公鑰文件;還用一種擴展名為.pfx 文件是包含公鑰和私鑰的密鑰交換文件。)

這時候會彈出 “創建私鑰密碼”對話框 和 “輸入私鑰密碼”對話框,我們都輸入密碼“xxxxxx”。(這個密碼的作用就是今後對證書進行導入,導出等操作的時候,輸入的密碼),命令提示成功後,這時候會在我的計算機D盤生成兩個文件 RechargeCA.pvk 和 RechargeCA.cer。如圖2

基於SSL的WCF對客戶端採用證書驗證

基於SSL的WCF對客戶端採用證書驗證

創建服務器端證書

輸入命令:makecert -n "CN=zhangyu-kf" -ic D:\RechargeCA.cer -iv D:\RechargeCA.pvk -sr LocalMachine -ss My -pe -sky exchange

根據根證書創建服務器端證書,使用mmc查看詳情如圖3

基於SSL的WCF對客戶端採用證書驗證

創建客戶端證書

輸入命令:

Makecert -n "CN=Release" -ic D:\RechargeCA.cer -iv D:\RechargeCA.pvk -sr CurrentUser -ss My -pe -sky exchange

Makecert -n "CN=Test" -ic D:\RechargeCA.cer -iv D:\RechargeCA.pvk -sr CurrentUser -ss My -pe -sky exchange

根據根證書創建客戶端證書,使用mmc查看詳情如圖4

基於SSL的WCF對客戶端採用證書驗證

WCF 服務器端配置文件

serviceCertificate 節點配置WCF從哪裡找到服務器端的證書

authentication 節點配置自定義的證書驗證邏輯

authentication 節點配置自定義的證書驗證邏輯

添加引用 System.IdentityModel 和System.IdentityModel.Selectors

新建類型CustomCertificateVerification繼承至X509CertificateValidator,重寫父類的 Validate 方法。在這個方法中,根據證書的指紋來對客戶端提供的證書進行檢驗。如圖5.查看證書的指紋如圖6

基於SSL的WCF對客戶端採用證書驗證

基於SSL的WCF對客戶端採用證書驗證

IIS發佈WCF服務

在IIS7中服務器證書中可以查看到我們剛才創建的證書。如圖7、8

我們新建web站點,在網站綁定中選擇https,SSL選擇服務器端證書.如圖9

SSL設置(如圖10、11)

基於SSL的WCF對客戶端採用證書驗證

基於SSL的WCF對客戶端採用證書驗證

基於SSL的WCF對客戶端採用證書驗證

基於SSL的WCF對客戶端採用證書驗證

基於SSL的WCF對客戶端採用證書驗證

瀏覽WCF服務

打開瀏覽器輸入地址,由於安裝了兩個客戶端證書,所以會讓你選擇。如圖12,

在上面的自定義證書驗證中我只允許Test的證書,所以選擇Release就無法訪問,選擇Test就ok了,如圖13

基於SSL的WCF對客戶端採用證書驗證

基於SSL的WCF對客戶端採用證書驗證

客戶端調用WCF

在客戶端調用WCF時需要指定證書,這裡就使用Test證書

相關問題答案