HTTPS簡(jiǎn)介
超文本傳輸安全協(xié)議(英語:Hypertext Transfer Protocol Secure,縮寫:HTTPS,常稱為HTTP over TLS,HTTP over SSL或HTTP Secure)是一種網(wǎng)絡(luò)安全傳輸協(xié)議丹莲。具體介紹以前先來介紹一下以前常見的HTTP,HTTP就是我們平時(shí)瀏覽網(wǎng)頁時(shí)候使用的一種協(xié)議尸诽。HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的甥材,也就是明文,因此使用HTTP協(xié)議傳輸隱私信息非常不安全性含。HTTP使用80端口通訊洲赵,而HTTPS占用443端口通訊。在計(jì)算機(jī)網(wǎng)絡(luò)上商蕴,HTTPS經(jīng)由超文本傳輸協(xié)議(HTTP)進(jìn)行通信叠萍,但利用SSL/TLS來加密數(shù)據(jù)包。HTTPS開發(fā)的主要目的绪商,是提供對(duì)網(wǎng)絡(luò)服務(wù)器的身份認(rèn)證苛谷,保護(hù)交換數(shù)據(jù)的隱私與完整性。這個(gè)協(xié)議由網(wǎng)景公司(Netscape)在1994年首次提出格郁,隨后擴(kuò)展到互聯(lián)網(wǎng)上抄腔。
HTTPS 工作原理
HTTPS在傳輸數(shù)據(jù)之前需要客戶端(瀏覽器)與服務(wù)端(網(wǎng)站)之間進(jìn)行一次握手,在握手過程中將確立雙方加密傳輸數(shù)據(jù)的密碼信息理张。TLS/SSL協(xié)議不僅僅是一套加密傳輸?shù)膮f(xié)議,更是一件經(jīng)過藝術(shù)家精心設(shè)計(jì)的藝術(shù)品绵患,TLS/SSL中使用了非對(duì)稱加密雾叭,對(duì)稱加密以及HASH算法。握手過程的具體描述如下:
1)瀏覽器將自己支持的一套加密規(guī)則發(fā)送給網(wǎng)站落蝙。
2)網(wǎng)站從中選出一組加密算法與HASH算法织狐,并將自己的身份信息以證書的形式發(fā)回給瀏覽器暂幼。證書里面包含了網(wǎng)站地址,加密公鑰移迫,以及證書的頒發(fā)機(jī)構(gòu)等信息旺嬉。
3)瀏覽器獲得網(wǎng)站證書之后瀏覽器要做以下工作:?a)?驗(yàn)證證書的合法性(頒發(fā)證書的機(jī)構(gòu)是否合法,證書中包含的網(wǎng)站地址是否與正在訪問的地址一致等)厨埋,如果證書受信任邪媳,則瀏覽器欄里面會(huì)顯示一個(gè)小鎖頭,否則會(huì)給出證書不受信的提示荡陷。?b) 如果證書受信任雨效,或者是用戶接受了不受信的證書,瀏覽器會(huì)生成一串隨機(jī)數(shù)的密碼废赞,并用證書中提供的公鑰加密徽龟。?c)?使用約定好的HASH算法計(jì)算握手消息,并使用生成的隨機(jī)數(shù)對(duì)消息進(jìn)行加密唉地,最后將之前生成的所有信息發(fā)送給網(wǎng)站据悔。
4)網(wǎng)站接收瀏覽器發(fā)來的數(shù)據(jù)之后要做以下的操作:?a) 使用自己的私鑰將信息解密取出密碼,使用密碼解密瀏覽器發(fā)來的握手消息耘沼,并驗(yàn)證HASH是否與瀏覽器發(fā)來的一致极颓。?b) 使用密碼加密一段握手消息,發(fā)送給瀏覽器耕拷。
5)瀏覽器解密并計(jì)算握手消息的HASH讼昆,如果與服務(wù)端發(fā)來的HASH一致,此時(shí)握手過程結(jié)束骚烧,之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機(jī)密碼并利用對(duì)稱加密算法進(jìn)行加密浸赫。
這里瀏覽器與網(wǎng)站互相發(fā)送加密的握手消息并驗(yàn)證,目的是為了保證雙方都獲得了一致的密碼赃绊,并且可以正常的加密解密數(shù)據(jù)既峡,為后續(xù)真正數(shù)據(jù)的傳輸做一次測(cè)試。另外碧查,HTTPS一般使用的加密與HASH算法如下:
非對(duì)稱加密算法:RSA运敢,DSA/DSS
對(duì)稱加密算法:AES,RC4忠售,3DES
HASH算法:MD5传惠,SHA1,SHA256
HTTPS對(duì)應(yīng)的通信時(shí)序圖如下:
HTTPS協(xié)議和HTTP協(xié)議的區(qū)別:
https協(xié)議需要到ca申請(qǐng)證書稻扬,一般免費(fèi)證書很少卦方,需要交費(fèi)。
http是超文本傳輸協(xié)議泰佳,信息是明文傳輸盼砍,https 則是具有安全性的ssl加密傳輸協(xié)議尘吗。
http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443。
http的連接很簡(jiǎn)單,是無狀態(tài)的 浇坐。
HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸睬捶、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議, 要比http協(xié)議安全近刘。
SSL 證書
從前面我們可以了解到HTTPS核心的一個(gè)部分是數(shù)據(jù)傳輸之前的握手擒贸,握手過程中確定了數(shù)據(jù)加密的密碼。在握手過程中跌宛,網(wǎng)站會(huì)向?yàn)g覽器發(fā)送SSL證書酗宋,SSL證書和我們?nèi)粘S玫纳矸葑C類似,是一個(gè)支持HTTPS網(wǎng)站的身份證明疆拘,SSL證書里面包含了網(wǎng)站的域名蜕猫,證書有效期,證書的頒發(fā)機(jī)構(gòu)以及用于加密傳輸密碼的公鑰等信息哎迄,由于公鑰加密的密碼只能被在申請(qǐng)證書時(shí)生成的私鑰解密回右,因此瀏覽器在生成密碼之前需要先核對(duì)當(dāng)前訪問的域名與證書上綁定的域名是否一致,同時(shí)還要對(duì)證書的頒發(fā)機(jī)構(gòu)進(jìn)行驗(yàn)證漱挚,如果驗(yàn)證失敗瀏覽器會(huì)給出證書錯(cuò)誤的提示翔烁。在這一部分我將對(duì)SSL證書的驗(yàn)證過程以及個(gè)人用戶在訪問HTTPS網(wǎng)站時(shí),對(duì)SSL證書的使用需要注意哪些安全方面的問題進(jìn)行描述旨涝。
證書的類型
實(shí)際上蹬屹,我們使用的證書分很多種類型,SSL證書只是其中的一種白华。證書的格式是由X.509標(biāo)準(zhǔn)定義慨默。SSL證書負(fù)責(zé)傳輸公鑰,是一種PKI(Public Key Infrastructure弧腥,公鑰基礎(chǔ)結(jié)構(gòu))證書厦取。我們常見的證書根據(jù)用途不同大致有以下幾種:
1、SSL證書管搪,用于加密HTTP協(xié)議虾攻,也就是HTTPS。
2更鲁、代碼簽名證書霎箍,用于簽名二進(jìn)制文件,比如Windows內(nèi)核驅(qū)動(dòng)澡为,F(xiàn)irefox插件漂坏,Java代碼簽名等等。
3、客戶端證書樊拓,用于加密郵件。
4塘慕、雙因素證書筋夏,網(wǎng)銀專業(yè)版使用的USB Key里面用的就是這種類型的證書。
這些證書都是由受認(rèn)證的證書頒發(fā)機(jī)構(gòu)——我們稱之為CA(Certificate Authority)機(jī)構(gòu)來頒發(fā)图呢,針對(duì)企業(yè)與個(gè)人的不同条篷,可申請(qǐng)的證書的類型也不同,價(jià)格也不同蛤织。CA機(jī)構(gòu)頒發(fā)的證書都是受信任的證書赴叹,對(duì)于SSL證書來說,如果訪問的網(wǎng)站與證書綁定的網(wǎng)站一致就可以通過瀏覽器的驗(yàn)證而不會(huì)提示錯(cuò)誤指蚜。
SSL證書申請(qǐng)與規(guī)則
SSL證書可以向CA機(jī)構(gòu)通過付費(fèi)的方式申請(qǐng)乞巧,也可以自己制作。CA機(jī)構(gòu)頒發(fā)的證書價(jià)格非常昂貴摊鸡,而且有效期一般只有一年到三年不等(年數(shù)不同绽媒,價(jià)格也不同),過期之后還要再次交錢申請(qǐng)免猾,因此一般只有企業(yè)才會(huì)申請(qǐng)證書是辕。但是隨著個(gè)人網(wǎng)站的增多,目前也有針對(duì)個(gè)人的SSL證書服務(wù)猎提,價(jià)格相對(duì)便宜一些获三,國內(nèi)的話400多塊錢就能申請(qǐng)到一個(gè),國外更是有免費(fèi)的SSL證書可以申請(qǐng)锨苏。在申請(qǐng)SSL證書時(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證書都可以隨便申請(qǐng)经宏,黑客們就不用做假證書欺騙了。
此外驯击,一個(gè)證書一般只綁定一個(gè)域名烁兰,如果CA機(jī)構(gòu)心情好的話,會(huì)免費(fèi)再綁一個(gè)徊都,比如你要申請(qǐng)域名時(shí)綁定的域名是 www.runoob.com沪斟,那么只有在瀏覽器地址是 https://www.runoob.com 的時(shí)候,這個(gè)證書才是受信任的,如果地址是https://tt.runoob.com或者h(yuǎn)ttps://login.runoob.com主之,那么這個(gè)證書由于訪問的域名與證書綁定的域名不同择吊,仍然會(huì)被瀏覽器顯示為不受信任的。
CA機(jī)構(gòu)也提供申請(qǐng)通配符域名(例如槽奕,*.runoob.com)几睛,通配符域名相當(dāng)于綁定了主域名下的所有域名,因此使用起來非常方便粤攒,但是價(jià)格也超級(jí)昂貴所森,一個(gè)通配符域名一年大概得5000塊錢,只有企業(yè)才可以申請(qǐng)夯接。
下面就來看看一個(gè)證書的信息:
在訪問hotmail的時(shí)候會(huì)跳轉(zhuǎn)到login.live.com焕济,這時(shí)IE瀏覽器上會(huì)有一個(gè)小鎖頭,點(diǎn)一下那個(gè)小鎖頭再點(diǎn)擊里面的"查看證書"就會(huì)出現(xiàn)上圖的證書窗口盔几,這里面我們可以看到這個(gè)證書只有一個(gè)用途——向遠(yuǎn)程計(jì)算機(jī)證明身份信息晴弃,證書的用途會(huì)有很多,SSL只是其中之一问欠。在"頒發(fā)給"這一項(xiàng)就是這個(gè)證書在申請(qǐng)時(shí)綁定的域名肝匆;下面的"頒發(fā)者"是證書的頒發(fā)機(jī)構(gòu)。最下面的兩個(gè)日期是證書申請(qǐng)時(shí)間以及過期的時(shí)間顺献。這里我們可以注意一下"頒發(fā)者"的信息旗国,里面有"Extended Validation SSL"的字樣,表明了這個(gè)證書是一個(gè)EV SSL證書(擴(kuò)展驗(yàn)證SSL證書)注整,EV SSL證書有個(gè)特點(diǎn)就是可以讓瀏覽器的地址欄變綠能曾,同時(shí)顯示出來證書所屬公司的名稱,如下圖所示:
EV SSL證書與其他的證書相比肿轨,費(fèi)用更高寿冕。
以上說的是向CA機(jī)構(gòu)申請(qǐng)證書的情況,如果個(gè)人網(wǎng)站只為加密傳輸也可以自己制作SSL證書椒袍,自己制作的證書不會(huì)受到瀏覽器的信任驼唱,在訪問的時(shí)候由于證書驗(yàn)證失敗而給出警告。
證書的驗(yàn)證過程
證書以證書鏈的形式組織驹暑,在頒發(fā)證書的時(shí)候首先要有根CA機(jī)構(gòu)頒發(fā)的根證書玫恳,再由根CA機(jī)構(gòu)頒發(fā)一個(gè)中級(jí)CA機(jī)構(gòu)的證書,最后由中級(jí)CA機(jī)構(gòu)頒發(fā)具體的SSL證書优俘。我們可以這樣理解京办,根CA機(jī)構(gòu)就是一個(gè)公司,根證書就是他的身份憑證帆焕,每個(gè)公司由不同的部門來頒發(fā)不同用途的證書惭婿,這些不同的部門就是中級(jí)CA機(jī)構(gòu),這些中級(jí)CA機(jī)構(gòu)使用中級(jí)證書作為自己的身份憑證,其中有一個(gè)部門是專門頒發(fā)SSL證書财饥,當(dāng)把根證書换吧,中級(jí)證書,以及最后申請(qǐng)的SSL證書連在一起就形成了證書鏈钥星,也稱為證書路徑式散。在驗(yàn)證證書的時(shí)候,瀏覽器會(huì)調(diào)用系統(tǒng)的證書管理器接口對(duì)證書路徑中的所有證書一級(jí)一級(jí)的進(jìn)行驗(yàn)證打颤,只有路徑中所有的證書都是受信的,整個(gè)驗(yàn)證的結(jié)果才是受信漓滔。我們還是以login.live.com這個(gè)證書舉例编饺,在查看證書的時(shí)候,點(diǎn)擊"證書路徑"標(biāo)簽就會(huì)有下圖的顯示:
根證書是最關(guān)鍵的一個(gè)證書响驴,如果根證書不受信任透且,它下面頒發(fā)的所有證書都不受信任。操作系統(tǒng)在安裝過程中會(huì)默認(rèn)安裝一些受信任的CA機(jī)構(gòu)的根證書豁鲤,可以在"運(yùn)行"里面運(yùn)行"certmgr.msc"啟動(dòng)證書管理器秽誊,如下圖所示:
根證書的有效期長(zhǎng),支持的用途多以方便頒發(fā)不同用途類型的中級(jí)證書琳骡;中級(jí)證書用途單一锅论,有效期相對(duì)短一些,但是比具體的SSL證書要長(zhǎng)很多楣号。
如果SSL證書驗(yàn)證失敗根據(jù)瀏覽器的不同會(huì)有以下的錯(cuò)誤提示:
SSL證書驗(yàn)證失敗有以下三點(diǎn)原因:
1最易、SSL證書不是由受信任的CA機(jī)構(gòu)頒發(fā)的
2、證書過期
3炫狱、訪問的網(wǎng)站域名與證書綁定的域名不一致
這三點(diǎn)原因也是IE瀏覽器給出的提示藻懒。
小提示:如果你對(duì)哪個(gè)根證書CA機(jī)構(gòu)比較憎恨,可以將它的根證書刪除视译,這樣所有它頒發(fā)的證書都不會(huì)受信任嬉荆。
SSL證書的安全問題
對(duì)HTTPS最常見的攻擊手段就是SSL證書欺騙或者叫SSL劫持,是一種典型的中間人攻擊酷含。不過SSL劫持并非只是用于攻擊目的鄙早,在一些特殊情況下利用SSL劫持我們可以更順暢的訪問網(wǎng)絡(luò),我會(huì)在后文提到第美。
以攻擊為目的的SSL劫持如果不注意瀏覽器安全提示的話蝶锋,很容易就中招。當(dāng)網(wǎng)絡(luò)中有中間人發(fā)起SSL劫持攻擊時(shí)什往,攻擊者需要偽造一個(gè)SSL證書發(fā)給瀏覽器扳缕,這個(gè)時(shí)候由于偽造的SSL證書不受信任,瀏覽器會(huì)給出提示。
這里有一個(gè)誤區(qū)躯舔,當(dāng)SSL證書不受信任的時(shí)候驴剔,并不一定就是有SSL劫持發(fā)生,有種例外情況是:一些個(gè)人網(wǎng)站買不起合法的SSL證書粥庄,因此會(huì)自己制作一個(gè)SSL證書來加密傳輸?shù)臄?shù)據(jù)丧失。如果你經(jīng)常訪問某個(gè)個(gè)人網(wǎng)站,而且你知道這個(gè)網(wǎng)站是干什么的惜互,那么這種情況可以不用擔(dān)心布讹。但是如果你訪問的是網(wǎng)銀,在線支付训堆,或者是hotmail.com描验,gmail.com等,這類公司性質(zhì)的網(wǎng)站一定會(huì)申請(qǐng)合法的SSL證書(12306.cn除外)坑鱼,一旦SSL證書不受信任膘流,應(yīng)該果斷的終止訪問,這個(gè)時(shí)候網(wǎng)絡(luò)中一定會(huì)存在異常行為鲁沥,對(duì)于一些小區(qū)寬帶的用戶一定要注意這點(diǎn)呼股。
所以作為個(gè)人用戶,你一定要知道你訪問的是什么網(wǎng)站画恰,如果你只是一個(gè)沒有多少計(jì)算機(jī)只是的普通網(wǎng)民彭谁,我相信你不會(huì)經(jīng)常上那些自己制作SSL證書的個(gè)人網(wǎng)站(12306.cn除外),因此如果你沒有辦法判斷網(wǎng)絡(luò)是不是有異常允扇,只要是證書有問題的马靠,干脆就別再訪問了。