pki
(public key infrastructure) 規範體系,包含:
問題:數字簽名技術: 基於公鑰密碼技術。
ca 數字簽名
兩個過程:
簽發證書的過程
撰寫證書元資料
:
使用通用的hash 演算法
(如sha-256
)對證書元資料計算生成數字摘要
使用issuer 的私鑰
對該數字摘要
進行加密
,生成乙個加密的數字摘要
,也就是issuer的 數字簽名
將數字簽名附加到數字證書
上,變成乙個簽過名的
數字證書
將簽過名的數字證書
與issuer 的公鑰
,一同發給證書使用者
(注意,將公鑰主動發給使用者是乙個形象的說法,只是為了表達使用者最終獲取到了 issuer 的公鑰)
驗證證書的過程
證書使用者獲通過某種途徑(如瀏覽器訪問)獲取
到該數字證書
,解壓
後分別獲得證書元資料
和數字簽名
使用同樣的hash演算法
計算證書元資料
的數字摘要
使用issuer 的公鑰
對數字簽名進行解密
,得到解密後的數字摘要
對比
2 和 3 兩個步驟得到的數字摘要值
,如果相同
,說明數字證書
確實是被issuer 驗證過
合法證書,證書中的資訊(最主要的是 owner 的公鑰)是可信
的
上述是對數字證書的簽名和驗證過程,
利用同樣的方法對普通資料
的數字簽名
和驗證
。
總結「簽發證書」與「驗證證書」兩個過程:
校驗的關鍵是issuer 的公鑰
,使用者獲取不到 issuer 的私鑰,只能獲取到 issuer 的公鑰.
問題:
這涉及到乙個信任鏈條
(證書鏈)
這個層次可以抽象為三個級別:
root
:可以理解為 最高端別的簽發人 issuer,負責認證intermediates 身份
的合法性
這個信任鏈條
,最終目的是保證 end-user 證書``可信
,公鑰``可信
。
結合實際的使用場景對證書鏈進行乙個歸納:
為了獲取 end-user 的公鑰,需要獲取 end-user 的證書,因為公鑰就儲存在該證書中
為了證明獲取到的 end-user 證書是可信的,就要看該證書是否被 intermediate 權威機構認證,等價於是否有權威機構的數字簽名
有了權威機構的數字簽名,而權威機構就是可信的嗎?需要繼續往上驗證,即檢視是否存在上一級權威認證機構的數字簽名
信任鏈條的終點是root ca
,採用自簽名
,對他的簽名只能無條件信任
無條件信任
,尤瓦爾赫拉裡在《人類簡史》中已經闡述過,基於虛構故事所建立的信任
,最終將人類帶到了今天。
root 根證書從何而來呢?
trusted root certificates
:瀏覽器
、作業系統
等內建
root 根證書
。
macos high sierra 中可用的受信任根證書列表
openssl基本原理 生成證書
參考 begin 公司乙個專案要進行交易資料傳輸,因為這個專案銀行那邊也是剛剛開始啟動,所有的支援只有乙個傳輸欄位的說明文件,好吧,總的有人做事不是嘛,於是介面開發正式展開,第一步的難點就是加密解密,我選擇使用openssl.openssl初接觸的人恐怕最難的在於先理解各種概念 公鑰 私鑰 簽名 驗...
mysql的基本原理 Mysql 基本原理
mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...
openssl基本原理以及生成證書
公司乙個專案要進行交易資料傳輸,因為這個專案銀行那邊也是剛剛開始啟動,所有的支援只有乙個傳輸欄位的說明文件,好吧,總的有人做事不是嘛,於是介面開發正式展開,第一步的難點就是加密解密,我選擇使用openssl.openssl初接觸的人恐怕最難的在於先理解各種概念 公鑰 私鑰 簽名 驗證簽名 加密 解密...