ssl證書相關知識

證書文件格式

  • xx.crt:證書文件
  • xx.key:私鑰文件
  • xx.req:請求文件
  • xx.csr:請求文件
  • xx.pem:證書文件爲 pem 格式(文本文件)
  • xx.der:證書文件爲 der 格式(二進制文件)
  • xxx.pfx :iis需要的證書
  • xxx.jks:java常見的證書類型
  • xxx.kbs :Android使用的證書類型

KEY 通常指私鑰。
CSR 是 Certificate Signing Request 的縮寫,即證書籤名請求,這不是證書,只是包含申請證書的基本信息。生成證書時要把這個提交給權威的證書頒發機構,頒發機構審覈通過之後,再根據這些申請信息生成相應的證書。
CRT 即 certificate的縮寫,即證書。
X.509 是一種證書格式。對X.509證書來說,認證者總是CA或由CA指定的人,一份X.509證書是一些標準字段的集合,這些字段包含有關用戶或設備及其相應公鑰的信息。
X.509的證書文件,一般以.crt結尾,根據該文件的內容編碼格式,可以分爲以下二種格式:
PEM - Privacy Enhanced Mail,打開看文本格式,以"-----BEGIN…“開頭,”-----END…"結尾,內容是 BASE64 編碼。Apache 和 *NIX 服務器偏向於使用這種編碼格式。
DER - Distinguished Encoding Rules,打開看是二進制格式,不可讀。Java 和 Windows 服務器偏向於使用這種編碼格式。

公私密鑰和證書理解

  • 1、客戶端向服務器發出加密請求,服務器用自己的私鑰加密網頁以後,連同本身的數字證書,一起發送給客戶端。
  • 2、客戶端(瀏覽器)的"證書管理器",有"受信任的根證書頒發機構"列表。客戶端會根據這張列表,查看解開數字證書的公鑰是否在列表之內。
  • 3、如果數字證書記載的網址,與你正在瀏覽的網址不一致,就說明這張證書可能被冒用,瀏覽器會發出警告。如果這張數字證書不是由受信任的機構頒發的,瀏覽器會發出另一種警告。
  • 4、如果數字證書是可靠的,客戶端就可以使用證書中的服務器公鑰,對信息進行加密,然後與服務器交換加密信息。
    參考:https://cloud.tencent.com/developer/news/276498

證書種類與生成步驟

證書分爲根證書、服務器證書、客戶端證書。根證書文件(ca.crt)和根證書對應的私鑰文件(ca.key)由 CA(證書授權中心,國際認可)生成和保管。那麼如何服務器獲得證書呢?向 CA 申請!步驟如下:

  • 1、服務器生成自己的公鑰(server.pub)和私鑰(server.key)。公鑰用於解密,私鑰用於加密;
  • 2、服務器使用公鑰生成請求文件(server.req),請求文件中包含服務器的相關信息,比如域名、公鑰、組織機構等;
  • 3、服務器將 server.req 發送給 CA。CA 驗證服務器合法後,使用 ca.key 和 server.req 生成證書文件(server.crt);
  • 4、CA 將證書文件(server.crt)發送給服務器。

由於ca.key 和 ca.crt 是一對,ca.crt 文件中包含公鑰,因此 ca.crt 可以解密 server.crt,用於驗證 server.crt是否合法。

ca.crt、client.crt、server.crt的理解

ca.crt 是根證書文件可以當做理解是證書信任機構,用它來簽發生成的客戶端證書client.crt與服務器端證書server.crt。當客戶端使用client.crt的私密加密數據發送到服務器端,服務器端使用ca.crt解密數字簽名,驗證客戶端證書是否合法,如果是合法的話,解密獲取客戶端公鑰進行數據解密。同理,服務器端收到客戶端的加密數據,也通過ca.crt解密驗證客戶端是否合法,如果合法的話也是拿取解密出來的客戶端公鑰進行數據解密。

所以一般使用的話,客戶端需要:
ca.crt、(檢測是服務器端否合法)、client.crt(數據加密)
服務器端需要:
ca.crt、(檢測是服務器端否合法)、server.crt(數據加密)

單向認證

單向驗證是指通信雙方中一方驗證另一方是否合法。通常是指客戶端驗證服務器。

客戶端需要:ca.crt

服務器需要:server.crt,server.key

PS:我們平時使用 PC 上網時使用的就是單向驗證的方式。即,我們驗證我們要訪問的網站的合法性。PC 中的瀏覽器(火狐、IE、chrome等)已經包含了很多 CA 的根證書(ca.crt)。當我們訪問某個網站(比如:https://www.baidu.com)時,網站會將其證書(server.crt)發送給瀏覽器,瀏覽器會使用 ca.crt 驗證 server.crt 是否合法。如果發現訪問的是不合法網站,瀏覽器會給出提示。

現實中,有的公司會使用自簽發證書,即公司自己生成根證書(ca.crt)。如果我們信任此網站,那麼需要手動將其證書添加到系統中

雙向驗證

雙向驗證是指通信雙方需要互相驗證對方是否合法。服務器驗證客戶端,客戶端驗證服務器。

客戶端需要:ca.crt,client.crt,client.key

服務器需要:ca.crt,server.crt,server.key

雙向驗證通常用於支付系統中,比如支付寶。我們在使用支付寶時必須下載數字證書,該證書就是支付寶頒發給針對我們這臺機器的證書,我們只能使用這臺機器訪問支付寶。如果換了機器,那麼要重新申請證書。

部分內容參考來源:
https://zhuanlan.zhihu.com/p/86926335
https://www.cnblogs.com/hnxxcxg/p/11301262.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章