О проекте
Я создаю настольное приложение для windows с использованием электронного фреймворка. Приложение извлекает данные и отображает их на устройстве (содержит windows -p c unit). Полученные данные могут быть подготовлены конечным пользователем на веб-сайте.
Текущее решение
При запуске программного обеспечения он проверяет жесткий диск на наличие существующих сертификатов. . Если сертификат отсутствует, он вызывает лямбда-функцию, чтобы начать процесс подготовки. Полезная нагрузка - это имя и описание устройства.
Лямбда-функция создаст случайный идентификатор, а затем создаст ключи и сертификат, вызвав iot.createKeysAndCertificate
. Затем он присоединит политику к сертификату, вызвав iot.attachPrincipalPolicy
, создаст новый объект (iot.createThing
) и, наконец, прикрепит его к сертификату. (iot.attachThingPrincipal
).
Сертификат и закрытый ключ будут переданы обратно объекту в функции обратного вызова лямбда, а затем сохранены на жесткий диск.
Требования
- Количество вещей, которые может создать покупатель, ограничено и установлено компанией.
- Объект должен иметь возможность слушать / получать только те данные, которые предназначены для этого объекта.
- У кого-то не должно быть возможности манипулировать этим предметом.
- В будущем он также должен иметь возможность поставлять программное обеспечение отдельно, без содержащегося в нем модуля windows -p c.
Проблемы
- Сертификат и ключ сохраняются на жестком диске. Так теоретически их можно закалить / украсть?
- Можно создать политику для ограничения тем, на которые можно подписаться / publi sh. Но, изменив / иным образом манипулируя именем объекта, мы можем подписаться / publi sh на другие темы? Таким образом, имя объекта не должно создаваться и сохраняться / считываться из файла конфигурации на P C. Какие еще есть варианты?
- Каждый может присоединиться к сети. Должен ли я вносить вещи в белый список?
Есть ли в этом потоке какой-либо серьезный недостаток, которого я не вижу? Должен ли процесс подготовки начинаться на веб-сайте, где пользователь сначала должен войти в систему через когнито, создать новое устройство, позволить лямбда-функции создать сертификат / ключ, а затем как-то связать с ним устройство? Но как же тогда выполняется занесение в белый список / хранение сертификатов?
Мне трудно осмыслить AWS IoT Provisioning. Буду признателен, если кто-нибудь сможет указать мне правильное направление.