HTTPS-加密SSL證書

從第一部分HTTP工做原理中,咱們能夠了解到HTTPS核心的一個部分是數據傳輸以前的握手,握手過程當中肯定了數據加密的密碼。在握手過程當中,網站會向瀏覽器發送SSL證書,SSL證書和咱們平常用的身份證相似,是一個支持HTTPS網站的身份證實,SSL證書裏面包含了網站的域名,證書有效期,證書的頒發機構以及用於加密傳輸密碼的公鑰等信息,因爲公鑰加密的密碼只能被在申請證書時生成的私鑰解密,所以瀏覽器在生成密碼以前須要先覈對當前訪問的域名與證書上綁定的域名是否一致,同時還要對證書的頒發機構進行驗證,若是驗證失敗瀏覽器會給出證書錯誤的提示。在這一部分我將對SSL證書的驗證過程以及我的用戶在訪問HTTPS網站時,對SSL證書的使用須要注意哪些安全方面的問題進行描述。html

小提示:文章比較長,若是你對SSL證書究竟是怎麼一回事,以及SSL欺騙的原理沒有興趣能夠跳過前面的部分,可是但願你能看一下「3、證書的驗證過程」中的那些圖片,知道瀏覽器會在什麼狀況下提示SSL證書錯誤;再看一下文章結尾處的3條總結,基本上就能夠知道如何安全的使用HTTPS了。

1、證書的類型

實際上,咱們使用的證書分不少種類型,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證書來講,若是訪問的網站與證書綁定的網站一致就能夠經過瀏覽器的驗證而不會提示錯誤。網絡

2、SSL證書申請與規則

SSL證書能夠向CA機構經過付費的方式申請,也能夠本身製做。post

CA機構頒發的證書價格很是昂貴,並且有效期通常只有一年到三年不等(年數不一樣,價格也不一樣),過時以後還要再次交錢申請,所以通常只有企業纔會申請證書。可是隨着我的網站的增多,目前也有針對我的的SSL證書服務,價格相對便宜一些,國內的話400多塊錢就能申請到一個,國外更是有免費的SSL證書能夠申請。網站

在申請SSL證書時須要向CA機構提供網站域名,營業執照,以及申請人的身份信息等。網站的域名很是重要,申請人必須證實本身對域名有全部權,若是支持Hotmail.com,Gmail.com的SSL證書均可以隨便申請,黑客們就不用作假證書欺騙了。此外,一個證書通常只綁定一個域名,若是CA機構心情好的話,會免費再綁一個,好比你要申請域名時綁定的域名是guokr.com,那麼只有在瀏覽器地址是https://guokr.com的時候,這個證書纔是受信任的,若是地址是https://www.guokr.com或者https://login.guokr.com,那麼這個證書因爲訪問的域名與證書綁定的域名不一樣,仍然會被瀏覽器顯示爲不受信任的。CA機構也提供申請通配符域名(例如,*.guokr.com),通配符域名至關於綁定了主域名下的全部域名,所以使用起來很是方便,可是價格也超級昂貴,一個通配符域名一年大概得5000塊錢,只有企業才能夠申請。加密

下面就來看看一個證書的信息: 
操作系統

在訪問hotmail的時候會跳轉到login.live.com,這時IE瀏覽器上會有一個小鎖頭,點一下那個小鎖頭再點擊裏面的「查看證書」就會出現上圖的證書窗口,這裏面咱們能夠看到這個證書只有一個用途——向遠程計算機證實身份信息,證書的用途會有不少,SSL只是其中之一。在「頒發給」這一項就是這個證書在申請時綁定的域名;下面的「頒發者」是證書的頒發機構。最下面的兩個日期是證書申請時間以及過時的時間。這裏咱們能夠注意一下「頒發者」的信息,裏面有「Extended Validation SSL」的字樣,代表了這個證書是一個EV SSL證書(擴展驗證SSL證書),EV SSL證書有個特色就是可讓瀏覽器的地址欄變綠,同時顯示出來證書所屬公司的名稱,以下圖所示:插件



EV SSL證書與其餘的證書相比,費用更高。3d

以上說的是向CA機構申請證書的狀況,若是我的網站只爲加密傳輸也能夠本身製做SSL證書,本身製做的證書不會受到瀏覽器的信任,在訪問的時候因爲證書驗證失敗而給出警告。

3、證書的驗證過程

證書以證書鏈的形式組織,在頒發證書的時候首先要有根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機構比較憎恨,能夠將它的根證書刪除,這樣全部它頒發的證書都不會受信任。

4、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,必定要按照網站說的那樣,「爲保障您順暢購票,請下載安裝根證書」。

最後咱們總結一下使用SSL證書要注意的問題:

  1. 除非必要,不要隨意安裝根證書。安裝根證書的時候必定要明確證書的來源。
  2. 對於網銀,在線支付,重要郵箱等網站,必定要確保SSL證書是沒有問題的,若是瀏覽器給出SSL證書錯誤的警告,必定要拒絕訪問。一些小區寬帶用戶必定要注意這點。
  3. 因爲如今我的申請SSL證書比較便宜,必定要注意掛着合法SSL證書的釣魚網站(國外比較常見)。對於釣魚網站,必定要看清域名,另外別相信什麼中獎的消息,同時要安裝帶有釣魚防禦功能的安全軟件。
相關文章
相關標籤/搜索