准备工作(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) 的规范体系,包含了数字证书格式定义、密钥生命周期管理、数字签名及验证等多项技术说明,不在本文中详细展开。
Azure IoT 中级(5)- 在 DPS/IoT Hub中使用X509证书的准备工作(1)了解证书链 - 图1

签发证书的过程
  1. 撰写证书元数据:包括 签发人(Issuer)地址签发时间有效期 等,还包括证书持有者(Owner)基本信息,比如 DN(DNS Name,即证书生效的域名)Owner 公钥 等信息
  2. 使用通用的 Hash 算法(如SHA-256)对证书元数据计算生成 数字摘要
  3. 使用 Issuer 的私钥对该数字摘要进行加密,生成一个加密的数字摘要,也就是Issuer的 数字签名
  4. 将数字签名附加到数字证书上,变成一个 签过名的数字证书
  5. 将签过名的数字证书与 Issuer 的公钥,一同发给证书使用者(注意,将公钥主动发给使用者是一个形象的说法,只是为了表达使用者最终获取到了 Issuer 的公钥)

    验证证书的过程
  6. 证书使用者获通过某种途径(如浏览器访问)获取到该数字证书,解压后分别获得 证书元数据数字签名

  7. 使用同样的Hash算法计算证书元数据的 数字摘要
  8. 使用 Issuer 的公钥 对数字签名进行解密,得到 解密后的数字摘要
  9. 对比 2 和 3 两个步骤得到的数字摘要值,如果相同,则说明这个数字证书确实是被 Issuer 验证过合法证书,证书中的信息(最主要的是 Owner 的公钥)是可信的

上述是对数字证书的签名和验证过程,对普通数据的数字签名和验证也是利用了同样的方法。
我们再来总结一下“签发证书”与“验证证书”两个过程,Issuer(CA)使用 Issuer 的私钥 对签发的证书进行数字签名,证书使用者使用 Issuser 的公钥 对证书进行校验,如果校验通过,说明该证书可信。
由此看出,校验的关键是 Issuer 的公钥,使用者获取不到 Issuer 的私钥,只能获取到 Issuer 的公钥,如果 Issuer 是一个坏家伙,谁来证明 Issuer 的身份 是可信的?
这就涉及到一个信任链条了,也就是证书链。


看一个案例, 比如在本站的证书中,可以查看到证书链条:
Azure IoT 中级(5)- 在 DPS/IoT Hub中使用X509证书的准备工作(1)了解证书链 - 图2


根证书是DigiCert,中间证书是CN=Encryption Everywhere DV TLS CA-G1, 叶证书是 www.51azure.cloud

Azure IoT 中级(5)- 在 DPS/IoT Hub中使用X509证书的准备工作(1)了解证书链 - 图3
证书链在物联网设备制造过程中的应用:
Azure IoT 中级(5)- 在 DPS/IoT Hub中使用X509证书的准备工作(1)了解证书链 - 图4
在本例中,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 进行注册。


本系列其他文章:

  1. (视频)Azure IoT 中级(1)-Device Provisioning Service(DPS)概览
  2. (视频)Azure IoT 中级(2)-理解DPS组注册和单独注册
  3. (视频)Azure IoT 中级(3)-(案例1)使用DPS通过对称密钥进行单个设备注册
  4. (视频)Azure IoT 中级(4)-(案例2)使用DPS通过对称密钥进行设备组注册
  5. (视频)Azure IoT 中级(5)- 在 DPS/IoT Hub中使用X509证书的准备工作(1)了解证书链
  6. (视频)Azure IoT 中级(6)- 在 DPS/IoT Hub中使用X509证书的准备工作(2)创建自签名证书并验证所有权
  7. (视频)Azure IoT 中级(7)- (案例3)设备通过X509证书经DPS验证后注册到IoT Hub并开始通信