從第一部分 HTTPS 原理中适荣,我們可以了解到 HTTPS 核心的一個(gè)部分是數(shù)據(jù)傳輸之前的握手丢烘,握手過(guò)程中確定了數(shù)據(jù)加密的密碼惜犀。在握手過(guò)程中揭璃,網(wǎng)站會(huì)向?yàn)g覽器發(fā)送SSL證書(shū)蟹肘,SSL證書(shū)和我們?nèi)粘S玫纳矸葑C類似楷掉,是一個(gè)支持 HTTPS 網(wǎng)站的身份證明吵瞻,SSL 證書(shū)里面包含了網(wǎng)站的域名运嗜,證書(shū)有效期仲翎,證書(shū)的頒發(fā)機(jī)構(gòu)以及用于加密傳輸密碼的公鑰等信息痹扇,由于公鑰加密的密碼只能被在申請(qǐng)證書(shū)時(shí)生成的私鑰解密,因此瀏覽器在生成密碼之前需要先核對(duì)當(dāng)前訪問(wèn)的域名與證書(shū)上綁定的域名是否一致溯香,同時(shí)還要對(duì)證書(shū)的頒發(fā)機(jī)構(gòu)進(jìn)行驗(yàn)證鲫构,如果驗(yàn)證失敗瀏覽器會(huì)給出證書(shū)錯(cuò)誤的提示。在這一部分我將對(duì) SSL 證書(shū)的驗(yàn)證過(guò)程以及個(gè)人用戶在訪問(wèn) HTTPS 網(wǎng)站時(shí)玫坛,對(duì)SSL證書(shū)的使用需要注意哪些安全方面的問(wèn)題進(jìn)行描述结笨。
小提示:文章比較長(zhǎng),如果你對(duì) SSL 證書(shū)到底是怎么一回事昂秃,以及 SSL 欺騙的原理沒(méi)有興趣可以跳過(guò)前面的部分禀梳,但是希望你能看一下“三、證書(shū)的驗(yàn)證過(guò)程”中的那些圖片肠骆,知道瀏覽器會(huì)在什么情況下提示 SSL 證書(shū)錯(cuò)誤算途;再看一下文章結(jié)尾處的3條總結(jié),基本上就可以知道如何安全的使用 HTTPS 了蚀腿。
一嘴瓤、證書(shū)的類型
實(shí)際上,我們使用的證書(shū)分很多種類型莉钙,SSL證書(shū)只是其中的一種廓脆。證書(shū)的格式是由X.509標(biāo)準(zhǔn)定義。SSL證書(shū)負(fù)責(zé)傳輸公鑰磁玉,是一種PKI(Public Key Infrastructure停忿,公鑰基礎(chǔ)結(jié)構(gòu))證書(shū)。
我們常見(jiàn)的證書(shū)根據(jù)用途不同大致有以下幾種:
- SSL證書(shū)蚊伞,用于加密HTTP協(xié)議席赂,也就是HTTPS。
- 代碼簽名證書(shū)时迫,用于簽名二進(jìn)制文件颅停,比如Windows內(nèi)核驅(qū)動(dòng),F(xiàn)irefox插件掠拳,Java代碼簽名等等癞揉。
- 客戶端證書(shū),用于加密郵件。
- 雙因素證書(shū)喊熟,網(wǎng)銀專業(yè)版使用的 USB Key 里面用的就是這種類型的證書(shū)柏肪。
這些證書(shū)都是由受認(rèn)證的證書(shū)頒發(fā)機(jī)構(gòu)——我們稱之為CA(Certificate Authority)機(jī)構(gòu)來(lái)頒發(fā),針對(duì)企業(yè)與個(gè)人的不同逊移,可申請(qǐng)的證書(shū)的類型也不同预吆,價(jià)格也不同。CA機(jī)構(gòu)頒發(fā)的證書(shū)都是受信任的證書(shū)胳泉,對(duì)于SSL證書(shū)來(lái)說(shuō)拐叉,如果訪問(wèn)的網(wǎng)站與證書(shū)綁定的網(wǎng)站一致就可以通過(guò)瀏覽器的驗(yàn)證而不會(huì)提示錯(cuò)誤。
二扇商、SSL證書(shū)申請(qǐng)與規(guī)則
SSL證書(shū)可以向CA機(jī)構(gòu)通過(guò)付費(fèi)的方式申請(qǐng)凤瘦,也可以自己制作。
CA機(jī)構(gòu)頒發(fā)的證書(shū)價(jià)格非常昂貴案铺,而且有效期一般只有一年到三年不等(年數(shù)不同蔬芥,價(jià)格也不同),過(guò)期之后還要再次交錢申請(qǐng)控汉,因此一般只有企業(yè)才會(huì)申請(qǐng)證書(shū)笔诵。但是隨著個(gè)人網(wǎng)站的增多,目前也有針對(duì)個(gè)人的SSL證書(shū)服務(wù)姑子,價(jià)格相對(duì)便宜一些乎婿,國(guó)內(nèi)的話400多塊錢就能申請(qǐng)到一個(gè),國(guó)外更是有免費(fèi)的SSL證書(shū)可以申請(qǐng)街佑。
在申請(qǐng)SSL證書(shū)時(shí)需要向CA機(jī)構(gòu)提供網(wǎng)站域名谢翎,營(yíng)業(yè)執(zhí)照,以及申請(qǐng)人的身份信息等沐旨。網(wǎng)站的域名非常重要森逮,申請(qǐng)人必須證明自己對(duì)域名有所有權(quán),如果支持Hotmail.com磁携,Gmail.com的SSL證書(shū)都可以隨便申請(qǐng)褒侧,黑客們就不用做假證書(shū)欺騙了。此外谊迄,一個(gè)證書(shū)一般只綁定一個(gè)域名闷供,如果CA機(jī)構(gòu)心情好的話,會(huì)免費(fèi)再綁一個(gè)鳞上,比如你要申請(qǐng)域名時(shí)綁定的域名是guokr.com这吻,那么只有在瀏覽器地址是https://guokr.com的時(shí)候吊档,這個(gè)證書(shū)才是受信任的篙议,如果地址是https://www.guokr.com或者https://login.guokr.com,那么這個(gè)證書(shū)由于訪問(wèn)的域名與證書(shū)綁定的域名不同,仍然會(huì)被瀏覽器顯示為不受信任的鬼贱。CA機(jī)構(gòu)也提供申請(qǐng)通配符域名(例如移怯,*.guokr.com),通配符域名相當(dāng)于綁定了主域名下的所有域名这难,因此使用起來(lái)非常方便舟误,但是價(jià)格也超級(jí)昂貴,一個(gè)通配符域名一年大概得5000塊錢姻乓,只有企業(yè)才可以申請(qǐng)嵌溢。
下面就來(lái)看看一個(gè)證書(shū)的信息:
在訪問(wèn)hotmail的時(shí)候會(huì)跳轉(zhuǎn)到login.live.com,這時(shí)IE瀏覽器上會(huì)有一個(gè)小鎖頭蹋岩,點(diǎn)一下那個(gè)小鎖頭再點(diǎn)擊里面的“查看證書(shū)”就會(huì)出現(xiàn)上圖的證書(shū)窗口赖草,這里面我們可以看到這個(gè)證書(shū)只有一個(gè)用途——向遠(yuǎn)程計(jì)算機(jī)證明身份信息,證書(shū)的用途會(huì)有很多剪个,SSL只是其中之一秧骑。在“頒發(fā)給”這一項(xiàng)就是這個(gè)證書(shū)在申請(qǐng)時(shí)綁定的域名;下面的“頒發(fā)者”是證書(shū)的頒發(fā)機(jī)構(gòu)扣囊。最下面的兩個(gè)日期是證書(shū)申請(qǐng)時(shí)間以及過(guò)期的時(shí)間乎折。這里我們可以注意一下“頒發(fā)者”的信息,里面有“Extended Validation SSL”的字樣侵歇,表明了這個(gè)證書(shū)是一個(gè)EV SSL證書(shū)(擴(kuò)展驗(yàn)證SSL證書(shū))骂澄,EV SSL證書(shū)有個(gè)特點(diǎn)就是可以讓瀏覽器的地址欄變綠,同時(shí)顯示出來(lái)證書(shū)所屬公司的名稱盒至,如下圖所示:
EV SSL證書(shū)與其他的證書(shū)相比酗洒,費(fèi)用更高。
以上說(shuō)的是向CA機(jī)構(gòu)申請(qǐng)證書(shū)的情況枷遂,如果個(gè)人網(wǎng)站只為加密傳輸也可以自己制作SSL證書(shū)樱衷,自己制作的證書(shū)不會(huì)受到瀏覽器的信任,在訪問(wèn)的時(shí)候由于證書(shū)驗(yàn)證失敗而給出警告酒唉。
三矩桂、證書(shū)的驗(yàn)證過(guò)程
證書(shū)以證書(shū)鏈的形式組織,在頒發(fā)證書(shū)的時(shí)候首先要有根CA機(jī)構(gòu)頒發(fā)的根證書(shū)痪伦,再由根CA機(jī)構(gòu)頒發(fā)一個(gè)中級(jí)CA機(jī)構(gòu)的證書(shū)侄榴,最后由中級(jí)CA機(jī)構(gòu)頒發(fā)具體的SSL證書(shū)。我們可以這樣理解网沾,根CA機(jī)構(gòu)就是一個(gè)公司癞蚕,根證書(shū)就是他的身份憑證,每個(gè)公司由不同的部門來(lái)頒發(fā)不同用途的證書(shū)辉哥,這些不同的部門就是中級(jí)CA機(jī)構(gòu)桦山,這些中級(jí)CA機(jī)構(gòu)使用中級(jí)證書(shū)作為自己的身份憑證攒射,其中有一個(gè)部門是專門頒發(fā)SSL證書(shū),當(dāng)把根證書(shū)恒水,中級(jí)證書(shū)会放,以及最后申請(qǐng)的SSL證書(shū)連在一起就形成了證書(shū)鏈,也稱為證書(shū)路徑钉凌。在驗(yàn)證證書(shū)的時(shí)候咧最,瀏覽器會(huì)調(diào)用系統(tǒng)的證書(shū)管理器接口對(duì)證書(shū)路徑中的所有證書(shū)一級(jí)一級(jí)的進(jìn)行驗(yàn)證,只有路徑中所有的證書(shū)都是受信的御雕,整個(gè)驗(yàn)證的結(jié)果才是受信矢沿。我們還是以login.live.com這個(gè)證書(shū)舉例,在查看證書(shū)的時(shí)候酸纲,點(diǎn)擊“證書(shū)路徑”標(biāo)簽就會(huì)有下圖的顯示:
根證書(shū)是最關(guān)鍵的一個(gè)證書(shū)咨察,如果根證書(shū)不受信任,它下面頒發(fā)的所有證書(shū)都不受信任福青。操作系統(tǒng)在安裝過(guò)程中會(huì)默認(rèn)安裝一些受信任的CA機(jī)構(gòu)的根證書(shū)摄狱,可以在“運(yùn)行”里面運(yùn)行“certmgr.msc”啟動(dòng)證書(shū)管理器,如下圖所示:
根證書(shū)的有效期長(zhǎng)无午,支持的用途多以方便頒發(fā)不同用途類型的中級(jí)證書(shū)媒役;中級(jí)證書(shū)用途單一,有效期相對(duì)短一些宪迟,但是比具體的SSL證書(shū)要長(zhǎng)很多酣衷。
如果SSL證書(shū)驗(yàn)證失敗根據(jù)瀏覽器的不同會(huì)有以下的錯(cuò)誤提示:
SSL證書(shū)驗(yàn)證失敗有以下三點(diǎn)原因:
- SSL證書(shū)不是由受信任的CA機(jī)構(gòu)頒發(fā)的
- 證書(shū)過(guò)期
- 訪問(wèn)的網(wǎng)站域名與證書(shū)綁定的域名不一致
這三點(diǎn)原因也是IE瀏覽器給出的提示。
小提示:如果你對(duì)哪個(gè)根證書(shū)CA機(jī)構(gòu)比較憎恨次泽,可以將它的根證書(shū)刪除穿仪,這樣所有它頒發(fā)的證書(shū)都不會(huì)受信任。
四意荤、SSL證書(shū)的安全問(wèn)題
對(duì)HTTPS最常見(jiàn)的攻擊手段就是SSL證書(shū)欺騙或者叫SSL劫持啊片,是一種典型的中間人攻擊。不過(guò)SSL劫持并非只是用于攻擊目的玖像,在一些特殊情況下利用SSL劫持我們可以更順暢的訪問(wèn)網(wǎng)絡(luò)紫谷,我會(huì)在后文提到。
以攻擊為目的的SSL劫持如果不注意瀏覽器安全提示的話捐寥,很容易就中招笤昨。當(dāng)網(wǎng)絡(luò)中有中間人發(fā)起SSL劫持攻擊時(shí),攻擊者需要偽造一個(gè)SSL證書(shū)發(fā)給瀏覽器握恳,這個(gè)時(shí)候由于偽造的SSL證書(shū)不受信任瞒窒,瀏覽器會(huì)給出提示。
這里有一個(gè)誤區(qū)乡洼,當(dāng)SSL證書(shū)不受信任的時(shí)候崇裁,并不一定就是有SSL劫持發(fā)生陵像,有種例外情況是:一些個(gè)人網(wǎng)站買不起合法的SSL證書(shū),因此會(huì)自己制作一個(gè)SSL證書(shū)來(lái)加密傳輸?shù)臄?shù)據(jù)寇壳。如果你經(jīng)常訪問(wèn)某個(gè)個(gè)人網(wǎng)站,而且你知道這個(gè)網(wǎng)站是干什么的妻怎,那么這種情況可以不用擔(dān)心壳炎。但是如果你訪問(wèn)的是網(wǎng)銀,在線支付逼侦,或者是hotmail.com匿辩,gmail.com等,這類公司性質(zhì)的網(wǎng)站一定會(huì)申請(qǐng)合法的SSL證書(shū)(12306.cn除外)榛丢,一旦SSL證書(shū)不受信任铲球,應(yīng)該果斷的終止訪問(wèn),這個(gè)時(shí)候網(wǎng)絡(luò)中一定會(huì)存在異常行為晰赞,對(duì)于一些小區(qū)寬帶的用戶一定要注意這點(diǎn)稼病。
所以作為個(gè)人用戶,你一定要知道你訪問(wèn)的是什么網(wǎng)站掖鱼,如果你只是一個(gè)沒(méi)有多少計(jì)算機(jī)只是的普通網(wǎng)民然走,我相信你不會(huì)經(jīng)常上那些自己制作SSL證書(shū)的個(gè)人網(wǎng)站(12306.cn除外),因此如果你沒(méi)有辦法判斷網(wǎng)絡(luò)是不是有異常戏挡,只要是證書(shū)有問(wèn)題的芍瑞,干脆就別再訪問(wèn)了。
小提示:對(duì)于12306.cn褐墅,一定要按照網(wǎng)站說(shuō)的那樣拆檬,“為保障您順暢購(gòu)票,請(qǐng)下載安裝根證書(shū)”妥凳。
最后我們總結(jié)一下使用SSL證書(shū)要注意的問(wèn)題:
- 除非必要竟贯,不要隨意安裝根證書(shū)。安裝根證書(shū)的時(shí)候一定要明確證書(shū)的來(lái)源逝钥。
- 對(duì)于網(wǎng)銀澄耍,在線支付,重要郵箱等網(wǎng)站晌缘,一定要確保SSL證書(shū)是沒(méi)有問(wèn)題的齐莲,如果瀏覽器給出SSL證書(shū)錯(cuò)誤的警告,一定要拒絕訪問(wèn)磷箕。一些小區(qū)寬帶用戶一定要注意這點(diǎn)选酗。
- 由于現(xiàn)在個(gè)人申請(qǐng)SSL證書(shū)比較便宜,一定要注意掛著合法SSL證書(shū)的釣魚(yú)網(wǎng)站(國(guó)外比較常見(jiàn))岳枷。對(duì)于釣魚(yú)網(wǎng)站芒填,一定要看清域名呜叫,另外別相信什么中獎(jiǎng)的消息,同時(shí)要安裝帶有釣魚(yú)防護(hù)功能的安全軟件殿衰。