天天看點

數字證書工作原理

目錄

ssl證書和https的關系

ssl數字證書為什麼會安全?

數字證書簽發、驗簽流程

reference

參考了很多文章,一些圖檔,直接拷貝别人的。

https在http的基礎上加入了ssl加密協定,http是明文傳輸,https是加密傳輸。

如何得到一張證書

數字證書的建立流程:

https://help.aliyun.com/document_detail/211100.html

可以通過阿裡雲ssl證書服務購買ssl證書,并向ca中心送出證書申請,直到證書成功簽發;您将已簽發的證書安裝到web伺服器後,則web服務将會通過https加密協定來傳輸資料。

https加密傳輸協定可激活用戶端浏覽器到網站伺服器之間的ssl加密通道(ssl協定),進而實作高強度雙向加密傳輸,防止傳輸資料被洩露或篡改。

安全作用

數字簽名的作用是防中間人僞造、篡改;

ssl數字證書的作用是證明發件人是誰,保證收到的公鑰是官方發給我的,不是被中間人篡改過的。

用ssl與不用ssl證書的差別:

數字證書工作原理

防中間人劫持,擷取明文資料;

浏覽器能驗證伺服器身份,區分官網或釣魚網站;

防中間人篡改,必要時,伺服器還可以驗證訪客身份(可選 );

ssl證書怎麼做到上面3個功能的?

請看數字證書簽發、驗簽流程

前提一定要了解數字簽名的流程.

數字證書就是給公鑰做的數字簽名,為什麼需要給公鑰做數字簽名?

格式

x.509是rfc5280定義的一種公鑰證書格式(public key certificate)。

x.509證書也被稱為數字digital certificate。

一張x.509包含一個public key和一個身份資訊。x.509證書要麼是自簽發,要麼是被ca簽發。

數字證書工作原理

把版本、發行方、過期時間、域名、公鑰、證書簽名等資訊 合成在一個檔案内,就叫數字證書。

裡面的資訊,根據标準格式存入,也可以根據标準格式取出。

自簽發就是系統根證書

根證書,在系統安裝初始化時,就會從ca機構導入進來。

數字證書工作原理

ca簽發,就是你申請證書的時,把你的資訊塊送出給ca,ca用他的rsa密鑰給你資訊塊加密,

得到一個:certificate signature , ca的證書也會在你電腦裡儲存着,

這樣你通過他的公鑰就能解密certificate signature 得到h2(哈希值),

可以做對比,來判斷是否篡改過。

簡化版的簽發、驗收流程

數字證書工作原理

ca 簽發證書的過程,如上圖左邊部分:

首先 ca 會把持有者的公鑰、用途、頒發者、有效時間等資訊打成一個包,然後對這些資訊進行 hash 計算,得到一個 hash 值;

然後 ca 會使用自己的私鑰将該 hash 值加密,生成 certificate signature,也就是 ca 對證書做了簽名;

最後将 certificate signature 添加在檔案證書上,形成數字證書;

用戶端校驗服務端的數字證書的過程,如上圖右邊部分:

首先用戶端會使用同樣的 hash 算法擷取該證書的 hash 值 h1;

通常浏覽器和作業系統中內建了 ca 的公鑰資訊,浏覽器收到證書後可以使用 ca 的公鑰解密 certificate signature 内容,得到一個 hash 值 h2 ;

最後比較 h1 和 h2,如果值相同,則為可信賴的證書,否則則認為證書不可信。

證書鍊

但事實上,證書的驗證過程中還存在一個證書信任鍊的問題,因為我們向 ca 申請的證書一般不是根證書簽發的,而是由中間證書簽發的,比如百度的證書,從下圖你可以看到,證書的層級有三級:

數字證書工作原理

我自己畫了一下簡圖:

數字證書工作原理

h2由上一級給你生成,在你送出資訊給ca的時候,ca用他的私鑰和你資訊摘要生成h2.

數字簽名、數字證書與https是什麼關系?

https://www.zhihu.com/question/52493697

一文徹底搞懂加密、數字簽名和數字證書!

javascript:void(0)

浏覽器如何驗證https證書的合法性?

https://www.zhihu.com/question/37370216

手工驗證一張數字證書的有效性

https://blog.yuantops.com/tech/validate_a_digital_certificate_step_by_step/

浏覽器驗證ssl數字證書的步驟

https://blog.yuantops.com/tech/how_do_web_broswer_validate_ssl_certificates/

繼續閱讀