我有一个 IoT 设备和一个 Android 应用程序。两者都通过 MQTT 服务器相互通信,并且该通信通过 SSL 加密。据我了解,出于安全原因,我需要更新MQTT服务器证书。如果我错了请纠正我。
使用新证书更新 IoT 设备和 Android 应用程序的常用方法是什么?在 Android 应用程序和 IoT 设备登录到此服务器后,创建一个从数据库提供证书的 Web 服务是否是一种好的做法? MQTT 服务器提供商提供这样的功能吗?
尚不清楚您是否打算仅使用服务器/代理端 TLS 还是双向 TLS。
假设只有服务器/代理端 TLS 那么你有多种选择
如果您使用的是 MQTT 代理托管提供商,那么他们很可能会使用公共证书 CA,因此您只能真正执行选项 1,并且很可能无需进行指纹识别,因为您无法提前访问所使用的证书。用于签署代理证书的 CA 证书可能会在 10-50 年后到期,因此在设备的使用寿命内不需要更换。
如果您正在进行相互 TLS 身份验证,那么您需要一种为每个客户端创建签名证书的方法,您不应该重复使用客户端证书,因为这会破坏客户端证书的意义。
要正确执行客户端证书,客户端应该生成自己的私钥(并且永远不要与其他任何人共享),然后生成证书签名请求,将其发送到 CA 进行签名,然后接收回客户端证书与私钥一起使用来验证其自身。每次此客户端证书过期时,它都应该使用现有的私钥生成新的 CSR 并再次由 CA 签名。
AWS IoT 等物联网系统可以提供客户端证书配置 iirc。