一.什么是數(shù)字證書(shū)狐援?
? ? ? ?數(shù)字證書(shū)是一種權(quán)威性的電子文檔贡必。它提供了一種在Internet上驗(yàn)證您身份的方式俱恶,其作用類似于司機(jī)的駕駛執(zhí)照或日常生活中的身份證雹嗦。它是由一個(gè)由權(quán)威機(jī)構(gòu)----CA證書(shū)授權(quán)(Certificate Authority)中心發(fā)行的,人們可以在互聯(lián)網(wǎng)交往中用它來(lái)識(shí)別對(duì)方的身份合是。當(dāng)然在數(shù)字證書(shū)認(rèn)證的過(guò)程中了罪,證書(shū)認(rèn)證中心(CA)作為權(quán)威的、公正的聪全、 可信賴的第三方泊藕,其作用是至關(guān)重要的。
Ok难礼,知道什么是數(shù)字證書(shū)后娃圆,先看看它長(zhǎng)的什么樣吧:>玫锋,文件縮略圖如下:
雙擊后打開(kāi)如下:
二.CA認(rèn)證機(jī)構(gòu)/CA認(rèn)證中心
1.CA認(rèn)證中心是什么?
CA認(rèn)證中心是負(fù)責(zé)簽發(fā)讼呢,管理撩鹿,認(rèn)證數(shù)字證書(shū)的機(jī)構(gòu),是基于國(guó)際互聯(lián)網(wǎng)平臺(tái)建立的一個(gè)公正悦屏,權(quán)威节沦,可信賴的第三方組織機(jī)構(gòu)。
2.世界上的CA認(rèn)證中心不止一間础爬,那他們之間的關(guān)系是什么(CA認(rèn)證中心之間的關(guān)系)甫贯?
嗯,回答這個(gè)問(wèn)題之前可以先看看下圖:
從圖中可以看到幕帆,CA認(rèn)證中心之間是一個(gè)樹(shù)狀結(jié)構(gòu)获搏,根CA認(rèn)證中心可以授權(quán)多個(gè)二級(jí)的CA認(rèn)證中心赖条,同理二級(jí)CA認(rèn)證中心也可以授權(quán)多個(gè)3級(jí)的CA認(rèn)證中心...如果你是數(shù)字證書(shū)申請(qǐng)人(比如說(shuō):交通銀行)失乾,你可以向根CA認(rèn)證中心,或者二級(jí)纬乍,三級(jí)的CA認(rèn)證中心申請(qǐng)數(shù)字證書(shū)碱茁,這是沒(méi)有限制的,當(dāng)你成功申請(qǐng)后仿贬,你就稱為了數(shù)字證書(shū)所有人纽竣。值得注意的是,根CA認(rèn)證中心是有多個(gè)的茧泪,也就是說(shuō)會(huì)有多棵這樣的結(jié)構(gòu)樹(shù)蜓氨。FireFox里面默認(rèn)記錄了一些根CA認(rèn)證機(jī)構(gòu)的信息,如圖:
看到這里队伟,肯定有人會(huì)問(wèn)穴吹,如果有現(xiàn)在新的根CA認(rèn)證機(jī)構(gòu)成立,F(xiàn)ireFox肯定是沒(méi)有這個(gè)CA認(rèn)證中心的信息的(這些信息是用來(lái)驗(yàn)證子CA認(rèn)證機(jī)構(gòu)的嗜侮,很重要港令,后面來(lái)會(huì)講到),那怎么辦呢锈颗?嗯~~確實(shí)顷霹,如果今天2009-1-8日突然在哪里成立一個(gè)新的CA認(rèn)證中心,我FireFox里面肯定沒(méi)有他的信息的击吱!但解決辦法還是有的淋淀,看上圖,可以找到一個(gè)"Import"按鈕覆醇,當(dāng)我們遇到這樣的倒霉事時(shí)绅喉,只有自己去下載并導(dǎo)入根CA認(rèn)證中心信息了(其實(shí)這樣做是不太安全的渠鸽!),或者期望FireFox的升級(jí)會(huì)升級(jí)這些信息柴罐,但這個(gè)我是不確定的徽缚。
3.為什么CA認(rèn)證中心是權(quán)威的?
其實(shí)搞清楚這個(gè)問(wèn)題后革屠,你也會(huì)真正了解“CA認(rèn)證中心是如何授權(quán)子CA認(rèn)證中心的凿试?”,“為什么偽造的數(shù)字證書(shū)是無(wú)效的”似芝,“為什么數(shù)字證書(shū)是一種權(quán)威性的電子文檔”等等一系列的問(wèn)題那婉。并且SSL可以說(shuō)是建立在CA認(rèn)證中心的權(quán)威,公正党瓮,可信賴的基礎(chǔ)上的详炬,如果CA認(rèn)證中心的信息可以被偽造的,那么SSL的一切就完了......
首先寞奸,我們先來(lái)看看呛谜,在FireFox里記錄的CA認(rèn)證中心的信息到底是什么東西?枪萄?見(jiàn)上圖隐岛,單擊某項(xiàng),Export導(dǎo)出....你會(huì)看到導(dǎo)出的東西很面熟瓷翻,原來(lái)就是數(shù)字證書(shū)>郯肌!
實(shí)際上每個(gè)CA認(rèn)證中心/數(shù)字證書(shū)所有人齐帚,他們都有一個(gè)數(shù)字證書(shū)妒牙,和屬于自己的RSA公鑰和密鑰,這些是他們的父CA認(rèn)證中心給他們頒發(fā)的对妄,這里先大概解釋一下RSA湘今,RSA是一種非對(duì)稱加密的算法,它的公鑰和密鑰是配對(duì)的饥伊,如果用公鑰加密象浑,用私鑰解密就可以得到明文;如果用私鑰加密琅豆,用公鑰解密也可以得到原來(lái)的明文愉豺,這由RSA特性決定,他效果可以用下圖概括:
對(duì)于私鑰:CA認(rèn)證中心/數(shù)字證書(shū)所有人自己保存茫因,不公開(kāi)蚪拦。
對(duì)于公鑰:CA認(rèn)證中心/數(shù)字證書(shū)所有人會(huì)把公鑰存在他的CA認(rèn)證中心的數(shù)字證書(shū)內(nèi)。
(1).首先,CA認(rèn)證中心/數(shù)字證書(shū)所有人驰贷,它在網(wǎng)絡(luò)上的表現(xiàn)形式只能是一張數(shù)字證書(shū)盛嘿!所以我們可以把某張數(shù)字證書(shū)等價(jià)于某個(gè)CA認(rèn)證中心/數(shù)字證書(shū)所有人。這樣的話括袒,驗(yàn)證數(shù)字證書(shū)的合法性就可以確定CA認(rèn)證中心/數(shù)字證書(shū)所有人是否是合法的4握住!锹锰!
(2).數(shù)字證書(shū)使用數(shù)字簽名作驗(yàn)證芥炭!這里簡(jiǎn)單說(shuō)明一下數(shù)字簽名的過(guò)程:你從Firefox/IE導(dǎo)出的數(shù)字證書(shū)包含3個(gè)部分:證書(shū)內(nèi)容(F),加密算法(A)恃慧,F(xiàn)加密密文(F') (數(shù)字證書(shū)結(jié)構(gòu)會(huì)在第三部分詳細(xì)介紹)园蝠,在這里,A不是一個(gè)算法痢士,而是兩個(gè)彪薛,所以密文F'是F兩次加密后的結(jié)果。
首先怠蹂,F(xiàn)會(huì)被散列算法SHA1計(jì)算出hash值h1(稱為128bit的摘要)善延,然后h1會(huì)被發(fā)布這個(gè)數(shù)字簽名的CA認(rèn)證機(jī)構(gòu)的用私鑰進(jìn)行RSA加密,注意:是發(fā)布這個(gè)數(shù)字簽名的CA認(rèn)證機(jī)構(gòu)褥蚯,如果現(xiàn)在被加密的數(shù)字證書(shū)是屬于二級(jí)CA認(rèn)證機(jī)構(gòu)的挚冤,那么用來(lái)加密這個(gè)證書(shū)的私鑰是根CA認(rèn)證機(jī)構(gòu)的私鑰?鲈觥赞庶!RAS加密完后,就形成密文F'澳骤。
當(dāng)你要驗(yàn)證這個(gè)數(shù)字證書(shū)可信/合法性時(shí)歧强,你需要找到你的上一層CA認(rèn)證中心的數(shù)字證書(shū),并且從中獲取公鑰为肮,把數(shù)據(jù)證書(shū)中的密文F'進(jìn)行RSA解密摊册,如果得出的值h2和h1比較(h1可以立即用數(shù)據(jù)證書(shū)中的F現(xiàn)場(chǎng)算出來(lái)),如果相等颊艳,則認(rèn)為證書(shū)是可信的茅特,合法的!由于你是不可能知道上一層CA認(rèn)證中心的私鑰棋枕,所以你無(wú)法偽造一個(gè)可以用上一層CA認(rèn)證中心公鑰解密的數(shù)字證書(shū)0仔蕖!
詳細(xì)流程圖如下:
由于一個(gè)數(shù)字證書(shū)基于上層的數(shù)字證書(shū)作驗(yàn)證重斑,那上層的數(shù)字證書(shū)又是否合法呢兵睛??這就會(huì)出現(xiàn)一直遞歸上去的現(xiàn)象,事實(shí)也是這樣的祖很,驗(yàn)證一個(gè)證書(shū)是否合法笛丙,需要驗(yàn)證到他的最頂層的根證書(shū)是否合法!從其他的文章弄來(lái)的這幅圖很好地表達(dá)了這個(gè)思想:
這里肯定又有人會(huì)問(wèn)假颇,那么最頂層的CA認(rèn)證中心如何證明它的合法性呢胚鸯?.......呵~這就是為什么FireFox要預(yù)先把一些最頂層(這里的"最頂層"和"根"是同一個(gè)概念)的CA認(rèn)證中心的證書(shū)加入到權(quán)威信任列表中了,因?yàn)楸考Γ铐攲覥A認(rèn)證中心沒(méi)有辦法證明蠢琳,所以,最頂層的CA認(rèn)證中心是總是受信任的>当傲须!而事實(shí)上,最頂層的CA認(rèn)證中心在是世界上也是為數(shù)不多的趟脂。這里大家應(yīng)該了解為什么我剛才說(shuō)自己導(dǎo)入根CA證書(shū)是不太安全的泰讽,因?yàn)槟銦o(wú)法驗(yàn)證。
三.數(shù)字證書(shū)的組成
可以先看看我從Firefox的證書(shū)截圖:
1.Certificate(證書(shū)):
(1).Common Name(證書(shū)所有人姓名昔期,簡(jiǎn)稱CN已卸,其實(shí)就是證書(shū)的名字,如第一幅圖看到的:ABA.ECOMRoot....)
(2).Version(版本硼一,現(xiàn)在一般是V3了)
(3).Issuer(發(fā)證機(jī)關(guān))
(4).Validity(有效日期)
(5).Subject(證書(shū)信息累澡,你會(huì)發(fā)現(xiàn)它和Issuer里面的內(nèi)容是一樣的)
(6).Subject's Public Key Info(證書(shū)所有人公鑰,剛才所說(shuō)的公鑰就是這個(gè)!)
(7).Extension(擴(kuò)展信息)
(8).Certificate Signature Algorithm(公鑰加密算法)般贼、
以上這幾項(xiàng)就是上面所說(shuō)的證書(shū)內(nèi)容(F)愧哟。
2.Certificate Signature Algorithm:
這是描述證書(shū)的加密算法,就是上所說(shuō)的加密算法(A)哼蛆,看它的Fireld Value蕊梧,一般會(huì)寫:PKCS #1 SHA-1 With RSA Encryption
3.Certificate Signature Value:
這記錄的是證書(shū)被加密后的結(jié)果,相當(dāng)于上面說(shuō)講的F'腮介。
四.數(shù)字證書(shū)的驗(yàn)證
要回答數(shù)字證書(shū)是如何驗(yàn)證的肥矢,首先要知道數(shù)字證書(shū)是要驗(yàn)證些什么東西:>,數(shù)字證書(shū)的驗(yàn)證叠洗,上面已經(jīng)講了一些甘改,這做一個(gè)總結(jié):
1.可信性驗(yàn)證/合法性驗(yàn)證:這個(gè)剛才已經(jīng)說(shuō)的很明白了吧:>
2.完整性驗(yàn)證:在驗(yàn)證可信性的過(guò)程中,h1和h2的比較灭抑,其實(shí)已經(jīng)順便驗(yàn)證其完整性了十艾。
3.有效性驗(yàn)證:比如驗(yàn)證它的Vilidity值,看是否過(guò)期...