1. 程式人生 > >瀏覽器驗證網站數字證書的流程(HTTPS協議)

瀏覽器驗證網站數字證書的流程(HTTPS協議)

關於瀏覽器驗證網站數字證書的流程網上的資料一般講的都不是很清楚。在查閱了不少資料後終於搞清楚這部分。

CA下發給網站的證書都是一個證書鏈,也就是一層一層的證書,從根證書開始,到下級CA,一層一層,最後一層就是網站證書。

瀏覽器收到伺服器傳送的證書後,需要驗證其真實性。而證書的簽名是通過簽名演算法上級CA的私鑰生成的,並非很多文章裡簡單說的靠CA私鑰生成。瀏覽器需要用上級CA的公鑰才能解密簽名,並與生成的指紋對比,那麼問題來了,這個上級CA的公鑰從哪來呢?

答案是此公鑰來自於證書鏈該層的上級CA的證書明文內。單個X509v3證書由以下部分組成:

X.509v3證書由三部分組成:

  • tbsCertificate (to be signed certificate),待簽名證書。
  • SignatureAlgorithm,簽名演算法。
  • SignatureValue,簽名值。

tbsCertificate又包含10項內容,在HTTPS握手過程中以明文方式傳輸:

  • Version Number,版本號。
  • Serial Number,序列號。
  • Signature Algorithm ID,簽名演算法ID。
  • Issuer Name,發行者。
  • Validity period,有效時間。
  • Subject name ,證書主體名稱。
  • Subject Public Key Info ,證書主體公鑰資訊,包含公鑰演算法和公鑰值。
  • Issuer Unique Identifier (optional),發行商唯一ID。
  • Subject Unique Identifier (optional),主體唯一ID。
  • Extensions (optional),擴充套件。

證書鏈由多個證書一層一層組成的,除了最底層的網站證書的公鑰是給使用者加密報文外,其他層證書中的公鑰均用於解密底層的證書指紋簽名。最高層的根證書是自簽名的,也就是自己頒發給自己,所以它的公鑰不僅用來解密下層的簽名,也用來給自己的簽名解密。

驗證證書是否真實的任務完成了,那麼證書是否可靠如何驗證呢?一句話,只要根證書可靠,整個證書鏈就可靠,而根證書是否可靠要看這個根證書是否在作業系統或瀏覽器內建的可信根證書內,在的話就可信。