CA,證書,簽名一鍋熟

前言

你可能已經聽過不少CA機構,數字證書,簽名等等一系列的東西,可是可能都不太在乎,認爲其根本沒什麼用。
做爲一個前端,講道理,你想得沒錯,確實沒什麼用,只是在學習https的時候若是理解了這些東西的話會有更好的理解。多學點東西總不會錯吧~前端

CA是什麼?

CA是Certificate Authority的縮寫,也叫「證書受權中心」。
通俗一點講,就是發證書的機構,權威機構。
打開你的ie瀏覽器--internet選項--內容--證書
image.png算法

能夠看到這裏有個受信任的根證書頒發機構,這些裏面的頒發者就是咱們所說的CA,那麼這些CA是哪裏來的呢?瀏覽器

全球權威的CA,就那麼幾個公司,這幾個公司的證書,已經被各軟件廠商設置成可信任的根證書了,內置在系統中了。至於怎麼認證爲權威,我就不太懂了,他們頒發證書的流程也不太清楚了,反正你就信他們就完了,若是他們出錯了,就會被取消CA資格。(提一個沃通,由於亂jb發證書被取消了資格)。當瀏覽器判斷證書頒發機構合法與否的時候,就會查看這個機構有沒有存在於本身的系統內置中。安全

上圖中還有一個中間證書頒發機構,其實這裏是有一個證書鏈的,上面那個根證書頒發機構發一個證書給A,而後A又發了一個證書給B,那麼B也是合法的,A就是這個中間證書頒發機構。根證書->A->B就是一條證書鏈,相似於朋友介紹朋友。學習

值得一提的是,咱們能夠本身建立證書,發給本身,本身翻身作主當CA。能夠參考12306網站。

數字證書是什麼?

數字證書就是互聯網通信中標誌通信各方身份信息的一串數字,提供了一種在Internet上驗證通訊實體身份的方式,數字證書不是數字身份證,而是身份認證機構蓋在數字身份證上的一個章或印(或者說加在數字身份證上的一個簽名)。它是由權威機構——CA機構,又稱爲證書受權(Certificate Authority)中心發行的,人們能夠在網上用它來識別對方的身份。網站

咱們能夠經過下面這樣來獲取咱們瀏覽中的網站的證書信息。
image.png加密

數字證書的內容主要有哪些呢?spa

  • 公鑰內容
  • 頒發者
  • 使用者
  • 有效期
  • 簽名
  • 其餘信息

加密算法

提到簽名以前,咱們要先了解下大概的加密算法有哪些。code

  • 對稱加密
  • 非對稱加密
  • hash算法

對稱加密

特性:加密解密用同一個密鑰。像指紋鎖,又能夠加密又能夠解密。blog

  • 明文->經過密鑰加密->密文
  • 密文->經過密鑰解密->明文

優勢:加密很快
缺點:密鑰一泄密,所有人玩完。好比一個公司公用一個密鑰,你不能要求每一個員工都作好了保密工做,一旦一個員工泄密了密鑰,由於對稱加密用的是同一把鑰匙,那麼因此人的密文都能被解開了。若是你要1對1用不一樣密鑰的話,那管理密碼又是另一個難題了。

非對稱加密

特性:加密和解密用的不同的鑰匙,就像傳統鎖,一個是鎖頭,一個是鑰匙。

  • 明文->公鑰->密文
  • 密文->密鑰->明文

優勢:跟上面那個相反,安全性更高,即便被泄露了一個員工的密鑰,其餘人的祕密也不會被泄露。管理密碼方便。
缺點:加密很慢,比上面那個可能慢上100倍。這也是爲何HTTPS不全程使用非對稱加密的緣由。

hash算法

特性:單向加密,沒法逆轉,常見有md5。可以隱藏原始信息,像咱們的密碼,咱們只須要對比md5後的密碼是否一致,不用關心原文是什麼。
講道理,優缺點都要有對比嘛,這個沒啥好對比的,因此沒什麼優缺點。

簽名是什麼?

簽名是一串通過hash計算的字符。用於判斷證書是否合法。

在上面咱們提到了數字證書的內容,裏面有一個公鑰,這個公鑰是啥?

CA機構擁有一對非對稱加密的公鑰密鑰,在發證書的時候啊,就會把這個公鑰給出去,他就本身偷偷保存着密鑰。

CA給證書籤名的流程以下:

  1. 首先生成一個文件P,內容有公鑰,頒發者,使用者,有效期等。
  2. 而後把證書內容P通過hash算法計算,獲得一個hash值H
  3. 最後使用本身私藏的私鑰對H進行RSA加密(非對稱),獲得簽名信息S

而後將內容P,簽名S連成一個文件,這個文件就是所謂的數字證書了。因此數字證書裏,包括證書持有者的身份信息,證書信息,證書持有人的公鑰,以及簽名信息。

簽名有什麼用?

是用來驗證咱們這個證書是否爲權威CA機構所發或者證書是否被篡改。

如今假設客戶端獲得了這個證書,如何確認這個證書屬於誰的呢?

  • 首先,證書裏有公鑰,那咱們能夠用這個公鑰解密這個簽名S
    由於CA用的是RSA非對稱加密,並且這個公鑰是公開的。那咱們根據前面介紹的加密算法中能夠知道:簽名S->通過公鑰解密->獲得H'
  • 而後,咱們對比這個H'和咱們上一節講到的H

    • 若是二者一致,那麼就是合法的,正常的
    • 若是二者不一致,那麼多是內容被篡改或者不是由CA簽發的

若是不合法呢,那麼客戶端就會彈出一個框,說XXX不受信任,可能潛藏危險,是否要繼續前往

通常這個狀況下,男性朋友都會義無反顧地選擇 繼續前往,這是不值得提倡的。

總結

CA證書發一個證書給網站,證書裏包括了一些頒發者的信息,簽名以及過時時間等等信息。客戶端訪問網站的時候,會檢查你的證書是否合法,是否被黑客篡改,經過判斷用公鑰解密簽名後和原來的hash值是否保持一致來決定是否彈窗警告。
若有錯誤,請在評論區指出,順便打個廣告☞leelei的博客

相關文章
相關標籤/搜索