iot - 使用 X509 的客户端到客户端通信
问题描述
我正在创建一个使用 DTLS 作为安全层的 coap 服务器,它将使用数字证书 x509。Coap 服务器是连接到使用 x509 作为身份验证的云服务器 (CA) 的数据桥。我也有一台使用相同身份验证方法直接连接到云服务器的设备。设备的一些功能,也需要与Coap服务器通信。
因此,云服务器是颁发设备和 Coap 数据桥的数字证书的 CA。
我想在设备中重用证书(用于与云服务器通信)以连接到 Coap 服务器。由于设备是一个约束事物,因此不建议拥有多个证书。这可能吗?
解决方案
是的,但有一些陷阱:
证书模式下的实现必须支持 [RFC7251]、[RFC5246] 和 [RFC4492] 中指定的强制实现密码套件 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8。即证书中包含一个SubjectPublicKeyInfo,它表示id-ecPublicKey的算法,namedCurves secp256r1 [RFC5480];公钥格式未压缩 [RFC5480];哈希算法是 SHA-256;如果包含,则密钥使用扩展指示 digitalSignature。证书必须使用 ECDSA 使用 secp256r1 进行签名,并且签名必须使用 SHA-256。
因此,您要么使用 ECDSA(ECC 证书,而不是 RSA),要么您需要检查您的服务器是否能够处理它。对于 Eclipse/Californium,节点的证书必须是 ECDSA,路径中的其他证书可以使用其他算法,如果它们在您的平台上受支持。
顺便说一句,我不确定您是否真的从 x509 中受益,但这取决于您在设备上使用的平台。
推荐阅读
- mongodb - 如何更新mongodb中的数组元素
- python - 我正在尝试使用 odeint 来解决电梯系统的非线性状态表示
- ios - 检测在 SwiftUI 中点击的系统警报按钮
- python - 使用 for 循环时从变量名的列表中添加后缀
- recurrent-neural-network - 使用 RNN,从几个时间因素预测户外玩耍的儿童数量
- python - 合并 pandas 中的重复数据
- math - 如何使用手机信号塔信息计算移动设备的位置?
- okta - 当用户通过组分配到应用程序时,Okta 是否会发送组成员资格删除?
- c++ - 为什么我们需要 std::partition_point 而我们可以使用 std::find_if_not 算法?
- c# - Xamarin 形成 Prism Refit