【问题标题】:Azure IoT Edge & CertificatesAzure IoT Edge 和证书
【发布时间】:2020-05-04 08:41:19
【问题描述】:

我们希望在我们的内部网络上部署几千个 IoT 设备,并通过 IoT Edge 作为透明网关(使用 MQTT)将它们连接到 Azure IoT 中心。

阅读此Understand how Azure IoT Edge uses certificates 似乎我需要我自己的根 CA,因此我需要设置和管理我自己的内部 PKI 基础架构(或者为来自第 3 方的企业托管 CA 服务支付一笔巨款)。对吗?

我的替代方法是添加我自己的 MQTT 服务器模块并且不使用“透明”网关功能,但随后我放弃了 C2D 功能,因为模块无法接收 C2D 消息。

我上面的假设是正确的还是错误的?

【问题讨论】:

  • 围绕 OpenSSL 构建您自己的小型 Web 界面并不是那么棘手,只取决于您想要与现有基础架构的集成程度,例如github.com/hardillb/web-ca
  • 我将尝试一下,并为我们的项目采用自签名证书。
  • 经过调查,github.com/hardillb/web-ca 并没有多大帮助。 IoT Edge 需要创建中间 CA(根、设备、工作负载)链。您的超级 Web 界面非常适合生成证书,但不能生成中间 CA
  • 应该有很多关于如何生成中间 CA 证书的文档(它实际上只是另一个带有额外标志的用户证书),然后您可以将 Web 界面指向该证书以继续前进。

标签: azure mqtt azure-iot-edge


【解决方案1】:

(仅供参考-我是您链接到的文档的作者.. :-))不需要使用完整的 PKI 基础设施或公共证书(如 Digicert)。主要要求是您的叶子 IoT 设备信任 IoT Edge 在您的叶子设备尝试连接时返回的证书。最简单的方法是使用公共 CA(数字证书等),或者在已经拥有 PKI 基础设施的企业环境中,这可能已经被企业中的设备信任。但这些都不是必需的。要求是让叶子信任生成 Edge 证书的根证书,它可以是从 openssl 等生成的自签名根证书(就像我们的脚本一样)。这样做的不利之处在于,现在由您来保护该证书的私有部分以防止不良行为者获得它,但最重要的是,由您决定将该证书(公共)分发给并由其信任,你的叶子设备。根据我们叶子设备的操作系统,这可能更容易(例如 Windows 组策略、Linux 脚本等)或更难(例如嵌入式操作系统)。但关键是可以只使用自签名证书,然后您就可以通过将自签名根证书放入设备受信任的根 ca 列表(即取决于操作系统和编程语言)。

此外,在根证书和您的设备 ca 证书之间不需要有中间证书(我们的脚本这样做只是为了显示“典型”环境)。但是,设备 ca 证书本身在“技术上”是一个中间体(它是一个“签名”证书)。

【讨论】:

  • 我们和 Gavin 有点像在同一条船上,试图找到一种解决方案,通过可信的证书链将我们的 IOT Edge 投入生产。我们有点迷茫的地方是,如果我们想在 Digicert 或其他地方购买证书,我们应该使用什么样的证书?什么是更简单的选择?
【解决方案2】:

我们为 IoT 中心活动建立了自己的内部 CA。
我们创建了根 CA 和中间 CA,然后将其部署到 IoT Edge。
我们向 IoT Edge 提供了中间证书和私钥(我们必须删除密码) 我们将根证书发送给设备制造商。

【讨论】:

    【解决方案3】:

    Azure's GitHub has some files to help get started with your own certs 从开发/测试的角度来看,但如果您稍微探索一下这些文件,您也可以利用这项工作来制作可以满足您的生产需求的长期证书。

    不过,这需要非常谨慎地进行;您将制作需要小心保护的强大安全“密钥”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      相关资源
      最近更新 更多