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