Azure IoT Edge 和证书

标签 azure mqtt azure-iot-edge

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

阅读本文Understand how Azure IoT Edge uses certificates看来我需要自己的根 CA,因此我需要设置和管理自己的内部 PKI 基础设施(或者花一大笔钱购买来自第 3 方的企业管理 CA 服务)。这是正确的吗?

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

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

最佳答案

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

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

关于Azure IoT Edge 和证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61588234/

相关文章:

database - 导出 Microsoft Azure WordPress Web 应用程序的数据库

java - MQTT Java 发布者和 Nodejs 订阅者

json - 如何使用 paho C 客户端将数据作为 JSON 对象发送到 MQTT 代理

c# - Azure IoT Adge BLE 模块 - Linux 容器的 BLE 实现

azure - IoT Edge 模块所需的属性更新

azure - QnA Maker 在 MS Teams 中部署时不显示按钮

azure - 在 Azure 门户中为事件类型 Microsoft.Storage.BlobCreated 创建主题筛选规则

node.js - Azure DB 断开连接和连接超时

mqtt - Paho MQTT 库名称

javascript - Docker:为什么从 .env 传递的变量即使从 .env 中删除并重建后仍会留在容器中