Azure IoT Edge 模块证书处理

Azure IoT Edge Module certificate handling

我正在部署边缘模块进行协议转换并使用证书来保护通信。

证书当前放置在模块容器内,这将需要在证书更改时重建和重新部署模块。

我正在寻找更好的解决方案,例如 azure key vault,以从中提取证书并避免 rebuild/redeploy 过程。

人们是否知道这样的选项和实施细节?

IoT Edge 守护进程有一个 API 用于获取链接到守护进程 config.yaml 中配置的 CA 证书的服务器证书。它将配置的主机名字段设置为服务器证书的 CN 字段。

这是 Edge Hub 用来为其 TLS 获取证书的API。

不幸的是,没有很好的客户端库可以与之交互API。但是,这是一个已发布的 swagger 文件,它定义了 API,可用于以您选择的语言生成客户端。

Swagger 定义:https://github.com/Azure/iotedge/blob/master/edgelet/api/workloadVersion_2019_01_30.yaml#L177

Edge Hub 实际上使用这个 swagger 定义来生成一个 C# 客户端来接收它的证书。该代码位于 IoT Edge 代码库的实用程序程序集中。 https://github.com/Azure/iotedge/tree/master/edge-util/src/Microsoft.Azure.Devices.Edge.Util/edged(尚未为此创建 nuget 包,但稍加努力,您应该可以使用此 API)。

Edge Hub 在此处使用此代码:https://github.com/Azure/iotedge/blob/master/edge-hub/src/Microsoft.Azure.Devices.Edge.Hub.Service/CertificateRenewal.cs