HTTPS簡介
超文字傳輸安全協議(英語:Hypertext Transfer Protocol Secure, 縮寫:HTTPS, 常稱為HTTP over TLS, HTTP over SSL或HTTP Secure)是一種網路安全傳輸協定。 具體介紹以前先來介紹一下以前常見的HTTP, HTTP就是我們平時流覽網頁時候使用的一種協議。 HTTP協定傳輸的資料都是未加密的, 也就是明文, 因此使用HTTP協定傳輸隱私資訊非常不安全。 HTTP使用80埠通訊, 而HTTPS佔用443埠通訊。 在電腦網路上, HTTPS經由超文字傳輸協定(HTTP)進行通信, 但利用SSL/TLS來加密資料包。 HTTPS開發的主要目的, 是提供對網路服務器的身份認證, 保護交換資料的隱私與完整性。 這個協議由網景公司(Netscape)在1994年首次提出, 隨後擴展到互聯網上。
HTTPS 工作原理
HTTPS在傳輸資料之前需要用戶端(流覽器)與服務端(網站)之間進行一次握手, 在握手過程中將確立雙方加密傳輸資料的密碼資訊。 TLS/SSL協定不僅僅是一套加密傳輸的協議, 更是一件經過藝術家精心設計的藝術品, TLS/SSL中使用了非對稱加密, 對稱加密以及HASH演算法。 握手過程的具體描述如下:
1)流覽器將自己支援的一套加密規則發送給網站。
2)網站從中選出一組加密演算法與HASH演算法, 並將自己的身份資訊以證書的形式發回給流覽器。 證書裡面包含了網站位址, 加密公開金鑰, 以及證書的頒發機構等資訊。
3)流覽器獲得網站證書之後流覽器要做以下工作: a) 驗證證書的合法性(頒發證書的機構是否合法, 證書中包含的網站位址是否與正在訪問的位址一致等),
4)網站接收流覽器發來的資料之後要做以下的操作: a) 使用自己的私密金鑰將資訊解密取出密碼, 使用密碼解密流覽器發來的握手消息, 並驗證HASH是否與流覽器發來的一致。 b) 使用密碼加密一段握手消息, 發送給流覽器。
5)流覽器解密並計算握手消息的HASH, 如果與服務端發來的HASH一致,
這裡流覽器與網站互相發送加密的握手消息並驗證, 目的是為了保證雙方都獲得了一致的密碼, 並且可以正常的加密解密資料, 為後續真正資料的傳輸做一次測試。 另外, HTTPS一般使用的加密與HASH演算法如下:
非對稱加密演算法:RSA, DSA/DSS
對稱加密演算法:AES, RC4, 3DES
HASH演算法:MD5, SHA1, SHA256
HTTPS對應的通信時序圖如下:
HTTPS協定和HTTP協定的區別:
https協定需要到ca申請證書, 一般免費證書很少, 需要交費。
http是超文字傳輸協定, 資訊是明文傳輸, https 則是具有安全性的ssl加密傳輸協議。
http和https使用的是完全不同的連接方式用的埠也不一樣,前者是80,後者是443。
http的連接很簡單,是無狀態的 。
HTTPS協定是由SSL+HTTP協定構建的可進行加密傳輸、身份認證的網路通訊協定, 要比http協議安全。
SSL 證書
從前面我們可以瞭解到HTTPS核心的一個部分是資料傳輸之前的握手, 握手過程中確定了資料加密的密碼。 在握手過程中, 網站會向流覽器發送SSL證書,
證書的類型
實際上, 我們使用的證書分很多種類型, SSL證書只是其中的一種。證書的格式是由X.509標準定義。SSL證書負責傳輸公開金鑰,是一種PKI(Public Key Infrastructure,公開金鑰基礎結構)證書。我們常見的證書根據用途不同大致有以下幾種:
1、SSL證書,用於加密HTTP協定,也就是HTTPS。
2、代碼簽章憑證,用於簽名二進位檔案,比如Windows內核驅動,Firefox外掛程式,Java代碼簽名等等。
3、用戶端證書,用於加密郵件。
4、雙因素證書,網銀專業版使用的USB Key裡面用的就是這種類型的證書。
這些證書都是由受認證的憑證授權——我們稱之為CA(Certificate Authority)機構來頒發,針對企業與個人的不同,可申請的證書的類型也不同,價格也不同。CA機構頒發的證書都是受信任的證書,對於SSL證書來說,如果訪問的網站與證書綁定的網站一致就可以通過流覽器的驗證而不會提示錯誤。
SSL證書申請與規則
SSL證書可以向CA機構通過付費的方式申請,也可以自己製作。CA機構頒發的證書價格非常昂貴,而且有效期一般只有一年到三年不等(年數不同,價格也不同),過期之後還要再次交錢申請,因此一般只有企業才會申請證書。但是隨著個人網站的增多,目前也有針對個人的SSL證書服務,價格相對便宜一些,國內的話400多塊錢就能申請到一個,國外更是有免費的SSL證書可以申請。在申請SSL證書時需要向CA機構提供網站功能變數名稱,營業執照,以及申請人的身份資訊等。網站的功能變數名稱非常重要,申請人必須證明自己對功能變數名稱有所有權,如果支持Hotmail.com,Gmail.com的SSL證書都可以隨便申請,駭客們就不用做假證書欺騙了。
此外,一個證書一般只綁定一個功能變數名稱,如果CA機構心情好的話,會免費再綁一個,比如你要申請功能變數名稱時綁定的功能變數名稱是 www.runoob.com,那麼只有在流覽器位址是 https://www.runoob.com 的時候,這個證書才是受信任的,如果位址是https://tt.runoob.com或者https://login.runoob.com,那麼這個證書由於訪問的功能變數名稱與證書綁定的功能變數名稱不同,仍然會被流覽器顯示為不受信任的。
CA機構也提供申請萬用字元功能變數名稱(例如,*.runoob.com),萬用字元功能變數名稱相當於綁定了主功能變數名稱下的所有功能變數名稱,因此使用起來非常方便,但是價格也超級昂貴,一個萬用字元功能變數名稱一年大概得5000塊錢,只有企業才可以申請。
下面就來看看一個證書的資訊:
在訪問hotmail的時候會跳轉到login.live.com,這時IE流覽器上會有一個小鎖頭,點一下那個小鎖頭再點擊裡面的"查看證書"就會出現上圖的證書視窗,這裡面我們可以看到這個證書只有一個用途——向遠端電腦證明身份資訊,證書的用途會有很多,SSL只是其中之一。在"頒發給"這一項就是這個證書在申請時綁定的功能變數名稱;下面的"頒發者"是證書的頒發機構。最下面的兩個日期是證書申請時間以及過期的時間。這裡我們可以注意一下"頒發者"的資訊,裡面有"Extended Validation SSL"的字樣,表明了這個證書是一個EV SSL證書(擴展驗證SSL證書),EV SSL證書有個特點就是可以讓流覽器的位址欄變綠,同時顯示出來證書所屬公司的名稱,如下圖所示:
EV SSL證書與其他的證書相比,費用更高。
以上說的是向CA機構申請證書的情況,如果個人網站只為加密傳輸也可以自己製作SSL證書,自己製作的證書不會受到流覽器的信任,在訪問的時候由於證書驗證失敗而給出警告。
證書的驗證過程
證書以憑證連結的形式組織,在頒發證書的時候首先要有根CA機構頒發的根證書,再由根CA機構頒發一個中級CA機構的證書,最後由中級CA機構頒發具體的SSL證書。我們可以這樣理解,根CA機構就是一個公司,根證書就是他的身份憑證,每個公司由不同的部門來頒發不同用途的證書,這些不同的部門就是中級CA機構,這些中級CA機構使用中級證書作為自己的身份憑證,其中有一個部門是專門頒發SSL證書,當把根證書,中級證書,以及最後申請的SSL證書連在一起就形成了憑證連結,也稱為憑證路徑。在驗證證書的時候,流覽器會調用系統的證書管理器介面對憑證路徑中的所有證書一級一級的進行驗證,只有路徑中所有的證書都是受信的,整個驗證的結果才是受信。我們還是以login.live.com這個證書舉例,在查看證書的時候,點擊"憑證路徑"標籤就會有下圖的顯示:
根證書是最關鍵的一個證書,如果根證書不受信任,它下面頒發的所有證書都不受信任。作業系統在安裝過程中會默認安裝一些受信任的CA機構的根證書,可以在"運行"裡面運行"certmgr.msc"啟動證書管理器,如下圖所示:
根證書的有效期長,支援的用途多以方便頒發不同用途類型的中級證書;中級證書用途單一,有效期相對短一些,但是比具體的SSL證書要長很多。
如果SSL證書驗證失敗根據流覽器的不同會有以下的錯誤提示:
SSL證書驗證失敗有以下三點原因:
1、SSL證書不是由受信任的CA機構頒發的
2、證書過期
3、訪問的網站功能變數名稱與證書綁定的功能變數名稱不一致
這三點原因也是IE流覽器給出的提示。
小提示:如果你對哪個根證書CA機構比較憎恨,可以將它的根證書刪除,這樣所有它頒發的證書都不會受信任。
SSL證書的安全問題
對HTTPS最常見的攻擊手段就是SSL證書欺騙或者叫SSL劫持,是一種典型的中間人攻擊。不過SSL劫持並非只是用於攻擊目的,在一些特殊情況下利用SSL劫持我們可以更順暢的訪問網路,我會在後文提到。
以攻擊為目的的SSL劫持如果不注意流覽器安全提示的話,很容易就中招。當網路中有中間人發起SSL劫持攻擊時,攻擊者需要偽造一個SSL證書發給流覽器,這個時候由於偽造的SSL證書不受信任,流覽器會給出提示。
這裡有一個誤區,當SSL證書不受信任的時候,並不一定就是有SSL劫持發生,有種例外情況是:一些個人網站買不起合法的SSL證書,因此會自己製作一個SSL證書來加密傳輸的資料。如果你經常訪問某個個人網站,而且你知道這個網站是幹什麼的,那麼這種情況可以不用擔心。但是如果你訪問的是網銀,線上支付,或者是hotmail.com,gmail.com等,這類公司性質的網站一定會申請合法的SSL證書(12306.cn除外),一旦SSL證書不受信任,應該果斷的終止訪問,這個時候網路中一定會存在異常行為,對於一些社區寬頻的用戶一定要注意這點。
所以作為個人用戶,你一定要知道你訪問的是什麼網站,如果你只是一個沒有多少電腦只是的普通線民,我相信你不會經常上那些自己製作SSL證書的個人網站(12306.cn除外),因此如果你沒有辦法判斷網路是不是有異常,只要是證書有問題的,乾脆就別再訪問了。
小提示:對於12306.cn,一定要按照網站說的那樣,"為保障您順暢購票,請下載安裝根證書"。
最後我們總結一下使用SSL證書要注意的問題:
1、除非必要,不要隨意安裝根證書。安裝根證書的時候一定要明確證書的來源。
2、對於網銀,線上支付,重要郵箱等網站,一定要確保SSL證書是沒有問題的,如果流覽器給出SSL證書錯誤的警告,一定要拒絕訪問。一些社區寬頻用戶一定要注意這點。
3、由於現在個人申請SSL證書比較便宜,一定要注意掛著合法SSL證書的釣魚網站(國外比較常見)。對於釣魚網站,一定要看清功能變數名稱,另外別相信什麼中獎的消息,同時要安裝帶有釣魚防護功能的安全軟體。
SSL證書只是其中的一種。證書的格式是由X.509標準定義。SSL證書負責傳輸公開金鑰,是一種PKI(Public Key Infrastructure,公開金鑰基礎結構)證書。我們常見的證書根據用途不同大致有以下幾種:1、SSL證書,用於加密HTTP協定,也就是HTTPS。
2、代碼簽章憑證,用於簽名二進位檔案,比如Windows內核驅動,Firefox外掛程式,Java代碼簽名等等。
3、用戶端證書,用於加密郵件。
4、雙因素證書,網銀專業版使用的USB Key裡面用的就是這種類型的證書。
這些證書都是由受認證的憑證授權——我們稱之為CA(Certificate Authority)機構來頒發,針對企業與個人的不同,可申請的證書的類型也不同,價格也不同。CA機構頒發的證書都是受信任的證書,對於SSL證書來說,如果訪問的網站與證書綁定的網站一致就可以通過流覽器的驗證而不會提示錯誤。
SSL證書申請與規則
SSL證書可以向CA機構通過付費的方式申請,也可以自己製作。CA機構頒發的證書價格非常昂貴,而且有效期一般只有一年到三年不等(年數不同,價格也不同),過期之後還要再次交錢申請,因此一般只有企業才會申請證書。但是隨著個人網站的增多,目前也有針對個人的SSL證書服務,價格相對便宜一些,國內的話400多塊錢就能申請到一個,國外更是有免費的SSL證書可以申請。在申請SSL證書時需要向CA機構提供網站功能變數名稱,營業執照,以及申請人的身份資訊等。網站的功能變數名稱非常重要,申請人必須證明自己對功能變數名稱有所有權,如果支持Hotmail.com,Gmail.com的SSL證書都可以隨便申請,駭客們就不用做假證書欺騙了。
此外,一個證書一般只綁定一個功能變數名稱,如果CA機構心情好的話,會免費再綁一個,比如你要申請功能變數名稱時綁定的功能變數名稱是 www.runoob.com,那麼只有在流覽器位址是 https://www.runoob.com 的時候,這個證書才是受信任的,如果位址是https://tt.runoob.com或者https://login.runoob.com,那麼這個證書由於訪問的功能變數名稱與證書綁定的功能變數名稱不同,仍然會被流覽器顯示為不受信任的。
CA機構也提供申請萬用字元功能變數名稱(例如,*.runoob.com),萬用字元功能變數名稱相當於綁定了主功能變數名稱下的所有功能變數名稱,因此使用起來非常方便,但是價格也超級昂貴,一個萬用字元功能變數名稱一年大概得5000塊錢,只有企業才可以申請。
下面就來看看一個證書的資訊:
在訪問hotmail的時候會跳轉到login.live.com,這時IE流覽器上會有一個小鎖頭,點一下那個小鎖頭再點擊裡面的"查看證書"就會出現上圖的證書視窗,這裡面我們可以看到這個證書只有一個用途——向遠端電腦證明身份資訊,證書的用途會有很多,SSL只是其中之一。在"頒發給"這一項就是這個證書在申請時綁定的功能變數名稱;下面的"頒發者"是證書的頒發機構。最下面的兩個日期是證書申請時間以及過期的時間。這裡我們可以注意一下"頒發者"的資訊,裡面有"Extended Validation SSL"的字樣,表明了這個證書是一個EV SSL證書(擴展驗證SSL證書),EV SSL證書有個特點就是可以讓流覽器的位址欄變綠,同時顯示出來證書所屬公司的名稱,如下圖所示:
EV SSL證書與其他的證書相比,費用更高。
以上說的是向CA機構申請證書的情況,如果個人網站只為加密傳輸也可以自己製作SSL證書,自己製作的證書不會受到流覽器的信任,在訪問的時候由於證書驗證失敗而給出警告。
證書的驗證過程
證書以憑證連結的形式組織,在頒發證書的時候首先要有根CA機構頒發的根證書,再由根CA機構頒發一個中級CA機構的證書,最後由中級CA機構頒發具體的SSL證書。我們可以這樣理解,根CA機構就是一個公司,根證書就是他的身份憑證,每個公司由不同的部門來頒發不同用途的證書,這些不同的部門就是中級CA機構,這些中級CA機構使用中級證書作為自己的身份憑證,其中有一個部門是專門頒發SSL證書,當把根證書,中級證書,以及最後申請的SSL證書連在一起就形成了憑證連結,也稱為憑證路徑。在驗證證書的時候,流覽器會調用系統的證書管理器介面對憑證路徑中的所有證書一級一級的進行驗證,只有路徑中所有的證書都是受信的,整個驗證的結果才是受信。我們還是以login.live.com這個證書舉例,在查看證書的時候,點擊"憑證路徑"標籤就會有下圖的顯示:
根證書是最關鍵的一個證書,如果根證書不受信任,它下面頒發的所有證書都不受信任。作業系統在安裝過程中會默認安裝一些受信任的CA機構的根證書,可以在"運行"裡面運行"certmgr.msc"啟動證書管理器,如下圖所示:
根證書的有效期長,支援的用途多以方便頒發不同用途類型的中級證書;中級證書用途單一,有效期相對短一些,但是比具體的SSL證書要長很多。
如果SSL證書驗證失敗根據流覽器的不同會有以下的錯誤提示:
SSL證書驗證失敗有以下三點原因:
1、SSL證書不是由受信任的CA機構頒發的
2、證書過期
3、訪問的網站功能變數名稱與證書綁定的功能變數名稱不一致
這三點原因也是IE流覽器給出的提示。
小提示:如果你對哪個根證書CA機構比較憎恨,可以將它的根證書刪除,這樣所有它頒發的證書都不會受信任。
SSL證書的安全問題
對HTTPS最常見的攻擊手段就是SSL證書欺騙或者叫SSL劫持,是一種典型的中間人攻擊。不過SSL劫持並非只是用於攻擊目的,在一些特殊情況下利用SSL劫持我們可以更順暢的訪問網路,我會在後文提到。
以攻擊為目的的SSL劫持如果不注意流覽器安全提示的話,很容易就中招。當網路中有中間人發起SSL劫持攻擊時,攻擊者需要偽造一個SSL證書發給流覽器,這個時候由於偽造的SSL證書不受信任,流覽器會給出提示。
這裡有一個誤區,當SSL證書不受信任的時候,並不一定就是有SSL劫持發生,有種例外情況是:一些個人網站買不起合法的SSL證書,因此會自己製作一個SSL證書來加密傳輸的資料。如果你經常訪問某個個人網站,而且你知道這個網站是幹什麼的,那麼這種情況可以不用擔心。但是如果你訪問的是網銀,線上支付,或者是hotmail.com,gmail.com等,這類公司性質的網站一定會申請合法的SSL證書(12306.cn除外),一旦SSL證書不受信任,應該果斷的終止訪問,這個時候網路中一定會存在異常行為,對於一些社區寬頻的用戶一定要注意這點。
所以作為個人用戶,你一定要知道你訪問的是什麼網站,如果你只是一個沒有多少電腦只是的普通線民,我相信你不會經常上那些自己製作SSL證書的個人網站(12306.cn除外),因此如果你沒有辦法判斷網路是不是有異常,只要是證書有問題的,乾脆就別再訪問了。
小提示:對於12306.cn,一定要按照網站說的那樣,"為保障您順暢購票,請下載安裝根證書"。
最後我們總結一下使用SSL證書要注意的問題:
1、除非必要,不要隨意安裝根證書。安裝根證書的時候一定要明確證書的來源。
2、對於網銀,線上支付,重要郵箱等網站,一定要確保SSL證書是沒有問題的,如果流覽器給出SSL證書錯誤的警告,一定要拒絕訪問。一些社區寬頻用戶一定要注意這點。
3、由於現在個人申請SSL證書比較便宜,一定要注意掛著合法SSL證書的釣魚網站(國外比較常見)。對於釣魚網站,一定要看清功能變數名稱,另外別相信什麼中獎的消息,同時要安裝帶有釣魚防護功能的安全軟體。