Azure Обработка сертификата IoT Edge Module - PullRequest
0 голосов
/ 11 марта 2020

Я развертываю пограничные модули для трансляции протоколов и использую сертификаты для защиты связи.

В настоящее время сертификаты размещаются внутри контейнера модулей, что потребует перестройки и повторного развертывания модулей при изменении сертификатов.

Я ищу лучшее решение, такое как azure хранилище ключей, чтобы извлекать сертификаты и избегать процесса перестроения / повторного развертывания.

Знают ли люди о такой опции и деталях реализации?

1 Ответ

0 голосов
/ 12 марта 2020

Демон IoT Edge имеет API для получения сертификатов сервера, связанных с сертификатом CA, настроенным в файле config.yaml демона. Он устанавливает поле имени хоста в конфигурации как поле CN сертификата сервера.

Это API, который Edge Hub использует для получения сертификата для своего TLS.

К сожалению, не существует хорошей клиентской библиотеки для взаимодействовать с этим API. Однако это опубликованный файл swagger, определяющий API, который можно использовать для генерации клиента на выбранном вами языке.

Определение Swagger: https://github.com/Azure/iotedge/blob/master/edgelet/api/workloadVersion_2019_01_30.yaml#L177

Edge Hub фактически использует это определение чванства для генерации клиента 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

...