问题描述
要将遥测从 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终端节点,我们需要:
- AWS IoT证书颁发机构公共证书
- 具有适当策略的证书,并附加了Sensor1
- 第2点的证书私钥
thing
我想对安全系统如何利用keyPath,certPath,caPath建立安全连接有一个一般的了解。
解决方法
证书和私钥用于解决三个问题:
- 作为客户,我是在与真正的AWS IoT服务器对话,而不是冒名顶替者?
- 作为AWS IoT服务器,我是在和注册客户交谈,而不是冒名顶替者吗?
- 客户端和服务器可以在没有人听的情况下安全地进行通信吗?
证书和私钥用于实现双向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>