揭秘WCF證書中包含的秘密
WCF有很多值得學習的地方,這里我們主要介紹如何生成WCF證書,包括介紹WCF證書中都包含些什么秘密等方面。X.509 是由國際電信聯(lián)盟(ITU-T)制定的數(shù)字證書標準,相信這是人盡皆知的了,目前X.509證書據(jù)我所知有三個版本,.net中使用的是 x.509-2,X.509-2 版引入了主體和簽發(fā)人唯一標識符的概念,以解決主體和/或簽發(fā)人名稱在一段時間后可能重復使用的問題,x509-2(以下簡稱x509)證書由兩把鑰匙組成,通常稱之為密鑰對,公鑰加密,私鑰解密。今天我想在這里對x509進行一個深入的介紹和了解,因為在證書的安全體系中,x509證書應用是非常頻繁的,或者說是不可缺少的。
1、如何生成WCF證書?
#T#微軟提供的Makecert.exe測試WCF證書生成工具可以很好的幫助我們得到一個x509標準證書,具體方法如下:下載Makecert.exe或者定位到你的計算機目錄:C:Program FilesMicrosoft SDKsWindowsv6.0Abin下,找找就看見了,我強烈建議你copy Makecert.exe到一個單獨的目錄中,如copy到D:cers。
現(xiàn)在點擊開始菜單-運行-輸入cmd,運行控制臺應用程序,定位到D:cers,在控制臺輸入:makecert -r -pe -$ individual -n “CN=mailSecurity” -sky exchange -sr currentuser -ss my mailSecurity.cer,即可在當前用戶證書存儲區(qū)下的個人區(qū)中生成一個名為mailSecurityr的x509證書,并在當前目錄輸出了證書文件mailSecurity.cer,以下簡單介紹一下各種參數(shù)意義,更復雜的參數(shù)請參考:證書創(chuàng)建工具幫助makecert 證書工具名
-r表示即將生成的證書是自我簽署的,自己給自己發(fā)獎(這里主要是指頒發(fā)機構)
-pe表示將所生成的私鑰標記為可導出。這樣可將私鑰包括在證書中
-$證書是個人用還是商用(individual/commercial)老美就是搞啊,這玩意用美元符號還真是形象得很。
-n表示證書主題,你就當它是標題吧,不管你取什么名字,必須包含CN=前綴
-sky指定主題的密鑰類型,必須是 signature、exchange 或一個表示提供程序類型的整數(shù)。默認情況下,可傳入 1 表示交換密鑰,傳入 2 表示簽名密鑰
-sr指定主題的證書存儲位置。Location 可以是 currentuser(默認值)或 localmachine(實際是必須是這兩個中的一個值)
-ss指定主題的證書存儲名稱,輸出證書即存儲在那里
mailSecurity.cer 證書名稱,不必與主題一致,不過建議你還是致的好。通過在開始菜單-運行-輸入mmc可以選擇證書單元來查看和管理證書,通過微軟的提供的certmgr.exe證書管理工具也可管理證書,和 makecert.exe在同一目錄,使用相當簡單,雙擊就可了,當然你還可以通過命令行模式來運行它,在微軟的很多批處理文件中就很好的體現(xiàn)了這一點,具體使用參見:證書管理器工具
2、WCF證書中都包含些什么秘密?
首先我們必須知道的是:微軟提供的證書生成工具給我們準備了兩種密鑰算法(MD5/SHA1)我們可以在生成證書的時候指定,如果沒有指定,則默認使用MD5算法。但是我當我用SHA1算法生成證書的時候,奇怪的事情發(fā)生了,看下圖。
WCF安全之X509證書