ssl - IoT 设备的自签名证书或 CA 证书

标签 ssl architecture iot

在服务器和物联网设备之间的安全通信方面,我不明白使用 CA 证书的真正好处是什么。

我在使用 Ubuntu 作为操作系统的物联网设备上工作,我打算使用 CA 证书。但是,如果我的用户不更新他们的设备固件会怎样? 现在证书在 1 年后到期,并考虑到一些用户很长时间没有更新他们的物联网设备......我遇到的风险是这些设备在证书到期后无法更新,因为它们无法通信与我的服务器。

有了自签名证书,我可以将有效期设置为 45 年,无论如何,我都可以授权,我可以撤销或决定何时发布新证书甚至交叉签名证书。

我显然只是在谈论设备和服务器之间的通信......用户的其余 api 将使用默认的 CA 证书。


我正在考虑的另一个选择是使用 CA 证书进行设备和服务器通信,同时添加一个自签名证书,我可以将其用作备份,以防主证书过期并且设备需要下载新软件(将包含新证书)这是可行的解决方案吗?

我应该这样处理证书吗?!或者我应该只使用操作系统根存储并确保它以某种方式更新? (在这种情况下......如何?......我想唯一的方法是发布设备固件的更新)

最佳答案

证书用于身份验证和加密。参见 https://www.ssl.com/faqs/what-is-a-certificate-authority/

如果您想确保您收到的数据来自经过身份验证的设备,那么您将使用证书。 您可以使用证书来加密每个请求。但它会占用大量资源。或者您使用证书进行身份验证并返回 JWT token 以供进一步请求。 (这就是服务帐户在云中的工作方式。)

手动证书管理很快就会变得复杂。 服务帐户是对应用程序/设备进行身份验证的常用方法。 Keycloak 是支持服务帐户的开源选项。

您应该将设备更新与身份验证分开。设备更新可能会也可能不会发生在经过身份验证的设备上。等待证书过期来更新设备听起来很奇怪。

关于ssl - IoT 设备的自签名证书或 CA 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64686840/

相关文章:

ssl - kubectl 无法连接到服务器 : x509: certificate signed by unknown authority

ssl - docker push 上的 TLS 超时?

c - 在代码中设置 Cinterion BGS2-W 调制解调器证书

javascript - 单页 webapp 所需的设计建议

javascript - 在可扩展的 JavaScript 架构上放置 DOM 交互的位置

c# - 多表单应用程序显示和隐藏表单的最佳实践?

eclipse - Mosquitto 与 Eclipse paho 客户端库

java - Spring Boot 导入信任库

c# - 用 C# 编写的 Windows IoT 控制台应用程序?

c# - 如何在 Windows Core IoT 应用程序中显示当前时间的时钟?