準備工作(1)瞭解證書鏈
本文介紹如下內容:
1. 瞭解證書鏈
2. 使用OPENSSL和 微軟提供的示例工具生成自簽名證書並應用在IoT Hub/DPS中;
視頻講解:
您可以在B站觀看視頻講解:https://www.bilibili.com/video/av92976806/
或在本站觀看:https://www.51azure.cloud/post/2020/3/3/azure-iot-5-iot-x509-cert-chain
圖文講解:
數字證書是用來認證公鑰持有者身份合法性的電子文檔,以防止第三方冒充行爲。數字證書由 CA(Certifacate Authority) 負責簽發,關鍵內容包括 頒發s者、證書有效期、使用者組織、使用者公鑰 等信息。
數字證書涉及到一個名爲 PKI(Public Key Infrastructure) 的規範體系,包含了數字證書格式定義、密鑰生命週期管理、數字簽名及驗證等多項技術說明,不在本文中詳細展開。
簽發證書的過程
- 撰寫證書元數據:包括 簽發人(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 的身份 是可信的?
這就涉及到一個信任鏈條了,也就是證書鏈。
看一個案例, 比如在本站的證書中,可以查看到證書鏈條:
根證書是DigiCert,中間證書是CN=Encryption Everywhere DV TLS CA-G1, 葉證書是 www.51azure.cloud
證書鏈在物聯網設備製造過程中的應用:
在本例中,X 公司對 Y 工廠進行簽名,Y 工廠轉而對 Z 技術人員進行簽名,而 Z 技術人員最後要對智能 X 小組件進行簽名,整個過程中不需要暴漏或傳遞任何私鑰,保證安全。
證書鏈在DPS中的應用:
例如,假設有五臺設備具有以下證書鏈:
- 設備 1:根證書 -> 證書 A -> 設備 1 證書
- 設備 2:根證書 -> 證書 A -> 設備 2 證書
- 設備 3:根證書 -> 證書 A -> 設備 3 證書
- 設備 4:根證書 -> 證書 B -> 設備 4 證書
- 設備 5:根證書 -> 證書 B -> 設備 5 證書
最開始,可爲根證書創建單個啓用的組註冊條目,讓五臺設備均獲得訪問權限。
如果之後證書 B 出現安全風險,可以爲證書 B 創建一個禁用的註冊組條目,以防止設備 4 和設備 5 進行註冊。
如果之後設備 3 出現安全風險,可爲其證書創建一個禁用的單個註冊條目。 這會撤消設備 3 的訪問權限,但仍允許設備 1 和設備 2 進行註冊。
本系列其他文章:
- (視頻)Azure IoT 中級(1)-Device Provisioning Service(DPS)概覽
- (視頻)Azure IoT 中級(2)-理解DPS組註冊和單獨註冊
- (視頻)Azure IoT 中級(3)-(案例1)使用DPS通過對稱密鑰進行單個設備註冊
- (視頻)Azure IoT 中級(4)-(案例2)使用DPS通過對稱密鑰進行設備組註冊
- (視頻)Azure IoT 中級(5)- 在 DPS/IoT Hub中使用X509證書的準備工作(1)瞭解證書鏈
- (視頻)Azure IoT 中級(6)- 在 DPS/IoT Hub中使用X509證書的準備工作(2)創建自簽名證書並驗證所有權
- (視頻)Azure IoT 中級(7)- (案例3)設備通過X509證書經DPS驗證後註冊到IoT Hub並開始通信