0

要将遥测数据从thing(比如 Sensor1)发送到 AWS IoT Core 端点,我们需要:

  1. AWS IoT 证书颁发机构公共证书
  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
    });

我想大致了解安全系统如何利用 keyPath、certPath、caPath 来建立安全连接。

4

1 回答 1

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 证书。通过验证 X.509 证书链在 TLS 层进行身份验证。这与您访问 HTTPS URL 时浏览器使用的方法相同。

客户端使用 引用的证书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证明客户端持有私钥的消息进行签名。

于 2020-10-03T06:57:32.177 回答