目錄
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/