Как система безопасности AWS IoT использует ключевые пути, CertPath, CApath для установления безопасного соединения?

#amazon-web-services #aws-iot #aws-iot-analytics

#amazon-web-services #aws-iot #aws-iot-analytics

Вопрос:

Чтобы отправить телеметрию с thing (скажем, Sensor1) на конечную точку ядра AWS IoT, нам нужно:

  1. Общедоступный сертификат AWS IoT Certificate Authority
  2. Сертификат с соответствующей политикой и Sensor1 прилагается
  3. Закрытый ключ сертификата из пункта 2
     const deviceName = 'Sensor1'
    
    // Create the thingShadow object with argument data
    const device = awsIoT.device({
       keyPath: 'private.pem.key',
       certPath: 'certificate.pem.crt',
       caPath: '/home/ec2-user/environment/root-CA.crt',
       clientId: deviceName,
       host: endpointFile.endpointAddress
    });
  

Я хочу получить общее представление о том, как система безопасности использует ключевые пути, CertPath, CApath для установления безопасного соединения.

Ответ №1:

Сертификаты и закрытый ключ используются для решения трех вопросов:

  1. Как клиент, я разговариваю с реальным сервером AWS IoT, а не с самозванцем?
  2. Как сервер AWS IoT, я разговариваю с зарегистрированным клиентом, а не с самозванцем?
  3. Могут ли клиент и сервер безопасно обмениваться данными без постороннего прослушивания?

Сертификаты и закрытый ключ используются для реализации взаимного протокола TLS для решения этих вопросов. Это позволяет клиенту аутентифицировать сервер AWS IoT (вопрос 1), а серверу — аутентифицировать клиента (вопрос 2). Сертификаты также обеспечивают безопасный канал связи TLS между клиентом и сервером (проблема 3)

Для клиента, аутентифицирующего сервер AWS IoT (из https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html ):

Когда ваше устройство или другой клиент пытается подключиться к AWS IoT Core, сервер AWS IoT Core отправляет сертификат X.509, который ваше устройство использует для аутентификации сервера. Аутентификация выполняется на уровне TLS посредством проверки цепочки сертификатов X.509. Это тот же метод, который используется вашим браузером при посещении URL-адреса HTTPS.

Клиент использует сертификат, на который ссылается the caPath , для проверки сертификата, который он получает от сервера, к которому он подключается.

Для сервера AWS IoT для аутентификации клиента (из https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html#x509-client-cert-basics):

AWS IoT проверяет подлинность клиентских сертификатов, используя режим аутентификации клиента по протоколу TLS.

При проверке подлинности клиента TLS AWS IoT запрашивает сертификат клиента X.509 и проверяет статус сертификата и учетную запись AWS на соответствие реестру сертификатов. Затем она запрашивает у клиента подтверждение владения закрытым ключом, который соответствует открытому ключу, содержащемуся в сертификате.

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

Комментарии:

1. Отправляет ли устройство Интернета вещей открытый ключ своего сертификата вместе с сертификатом на сервер AWS IoT Core?

2. Сертификат (на который ссылается certPath ) уже содержит открытый ключ. Таким образом, клиенту нужно только отправить сертификат. Это делается как часть подтверждения связи TLS.