AWS IoT安全系统如何利用keyPath,certPath,caPath建立安全连接?

问题描述

要将遥测从 const filterHandler = React.useCallback(() => { switch (status) { case `completed`: setFilteredTodos(todos.filter((todo) => todo.completed === true)); break; case `uncompleted`: setFilteredTodos(todos.filter((todo) => todo.completed === false)); break; default: setFilteredTodos(todos); break; } },[todos,status]); // Save to Local const saveLocalTodos = React.useCallback(() => { localStorage.setItem("todos",JSON.stringify(todos)); },[todos]); const getLocalTodos = React.useCallback(() => { if (localStorage.getItem("todos") === null) { localStorage.setItem("todos",JSON.stringify([])); } else { let todoLocal = JSON.parse(localStorage.getItem(`todos`)); setTodos(todoLocal); } },[]); useEffect(() => { filterHandler(); saveLocalTodos(); getLocalTodos(); },[getLocalTodos,filterHandler,saveLocalTodos]); (例如Sensor1)发送到AWS IoT Core终端节点,我们需要:

  1. AWS IoT证书颁发机构公共证书
  2. 具有适当策略的证书,并附加了Sensor1
  3. 第2点的证书私钥
thing

我想对安全系统如何利用keyPath,certPath,caPath建立安全连接一个一般的了解。

解决方法

证书和私钥用于解决三个问题:

  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引用的私钥对客户端进行身份验证,以签署一条消息,以证明客户端持有私钥。 / p>