數字證書是用來認證公鑰持有者身份合法性的電子文件,以防止第三方冒充行為。數字證書由ca(certifacate authority)負責簽發,關鍵內容包括頒發s者、證書有效期、使用者組織、使用者公鑰等資訊。數字證書涉及到乙個名為pki(public key infrastructure)的規範體系,包含了數字證書格式定義、金鑰生命週期管理、數字簽名及驗證等多項技術說明,不在這篇筆記中詳細展開。
我們借助下面的流程,看看 ca 是如何簽發一張證書,使用者又是如何驗證這樣證書的。這又涉及到了數字簽名技術,數字簽名技術又是基於公鑰密碼技術。
現實世界中,簽名是針對承諾的一種表現形式,手手段可以通過手寫簽字或蓋扣印章;而在數字世界中,簽名仍然是為了表示承諾,只是手段變成了二進位制。
好,我們來看看 ca 數字簽名包括兩個過程:簽發證書(signing)和驗證證書(verification)
數字簽名與驗證
簽發證書的過程
撰寫證書元資料:包括簽發人(issuer)、位址、簽發時間、有效期等,還包括證書持有者(owner)基本資訊,比如dn(dns name,即證書生效的網域名稱)、owner 公鑰等資訊
使用通用的 hash 演算法(如sha-256)對證書元資料計算生成數字摘要使用 issuer 的私鑰對該數字摘要進行加密,生成乙個加密的數字摘要,也就是issuer的數字簽名將數字簽名附加到數字證書上,變成乙個簽過名的數字證書將簽過名的數字證書與issuer 的公鑰,一同發給證書使用者(注意,將公鑰主動發給使用者是乙個形象的說法,只是為了表達使用者最終獲取到了 issuer 的公鑰)
驗證證書的過程
證書使用者獲通過某種途徑(如瀏覽器訪問)獲取到該數字證書,解壓後分別獲得證書元資料和數字簽名使用同樣的hash演算法計算證書元資料的數字摘要使用issuer 的公鑰對數字簽名進行解密,得到解密後的數字摘要對比 2 和 3 兩個步驟得到的數字摘要值,如果相同,則說明這個數字證書確實是被 issuer 驗證過合法證書,證書中的資訊(最主要的是 owner 的公鑰)是可信的
上述是對數字證書的簽名和驗證過程,對普通資料的數字簽名和驗證也是利用了同樣的方法。
我們再來總結一下「簽發證書」與「驗證證書」兩個過程,issuer(ca)使用issuer 的私鑰對簽發的證書進行數字簽名,證書使用者使用issuser 的公鑰對證書進行校驗,如果校驗通過,說明該證書可信。
由此看出,校驗的關鍵是issuer 的公鑰,使用者獲取不到 issuer 的私鑰,只能獲取到 issuer 的公鑰,如果 issuer 是乙個壞傢伙,誰來證明issuer 的身份是可信的?
這就涉及到乙個信任鏈條了,也是這篇筆記本身要講述的事情,證書鏈。
有兩種型別的證書機構(ca) :根ca和中間ca。為了使ssl證書受信任,該證書必須由正在連線的裝置的受信任儲存區中包括的ca頒發。
如果證書不是由受信任的ca頒發的,則連線裝置(例如web瀏覽器)將檢查以檢視頒發ca的證書是否由受信任的ca頒發。它會繼續檢查,直到找到受信任的ca(此時將建立受信任的安全連線),或者找不到受信任的ca(此時裝置通常將顯示錯誤)。
從根證書到終端使用者證書的ssl證書列表代表ssl證書鏈。
這個層次可以抽象為三個級別:
root:可以理解為最高端別的簽發人 issuer,負責認證 intermediates 身份的合法性
這其實代表了乙個信任鏈條,最終的目的就是為了保證 end-user 證書是可信的,該證書的公鑰也就是可信的。
證書鏈結合實際的使用場景對證書鏈進行乙個歸納:
為了獲取 end-user 的公鑰,需要獲取 end-user 的證書,因為公鑰就儲存在該證書中
為了證明獲取到的 end-user 證書是可信的,就要看該證書是否被 intermediate 權威機構認證,等價於是否有權威機構的數字簽名
有了權威機構的數字簽名,而權威機構就是可信的嗎?需要繼續往上驗證,即檢視是否存在上一級權威認證機構的數字簽名
信任鏈條的最終是root ca,他採用自簽名,對他的簽名只能無條件的信任
證書鏈逐級認證
說到無條件信任,也不用奇怪,尤瓦爾赫拉裡在《人類簡史》中已經闡述過,基於虛構故事所建立的信任,最終將人類待到了今天。
參考:what is the ssl certificate chain?
關於Jsoup的一些認識
jsoup是解析html的工具,使用時要匯入jsoup.jar包 獲取 的html檔案 獲取jsoup連線 connection con jsoup.connect classno 獲取document物件 document doc con.get 獲取標籤中的html內容,例如sdskd中標籤的內...
關於宗教的一些認識
來京之後,我切實感受到了宗教的存在。實驗室的乙個小夥伴,是個 徒。為了了解 教的文化活動,我參加了好幾次她所在的教會的活動。感受頗多 其一,彼此陌生的人,因為信仰,居然可以短時間內形成親密團結的氛圍,滿臉樸實 毫無警惕地敞開心懷,進行懺悔,進行交流。其二,活動的形式有歌唱讚美主,演說認識主的過程。讚...
關於快取的一些認識
一 快取的成本和收益是什麼 既然要討論是否真的需要快取這個問題,就要知道快取帶來的成本與收益 好處 壞處 是什麼?收益 成本 快取 後端儲存 資源 1.加速讀寫 降低後端負載 資料不一致性 維護成本 架構複雜度 二 快取成本與收益詳解 收益是很明顯的,通常來說乙個設計還不錯的快取系統,能夠幫助你的業...