SSL证书更新算法

问题描述 投票:0回答:1

我有一个 IoT 设备和一个 Android 应用程序。两者都通过 MQTT 服务器相互通信,并且该通信通过 SSL 加密。据我了解,出于安全原因,我需要更新MQTT服务器证书。如果我错了请纠正我。

使用新证书更新 IoT 设备和 Android 应用程序的常用方法是什么?在 Android 应用程序和 IoT 设备登录到此服务器后,创建一个从数据库提供证书的 Web 服务是否是一种好的做法? MQTT 服务器提供商提供这样的功能吗?

android ssl-certificate mqtt iot
1个回答
0
投票

尚不清楚您是否打算仅使用服务器/代理端 TLS 还是双向 TLS。

假设只有服务器/代理端 TLS 那么你有多种选择

  1. 您使用由公共可信 CA 颁发的代理证书,并且依赖 Android 操作系统提供可信 CA 证书列表来验证证书。如果您想要更多的安全性,您还可以在应用程序中包含经纪人证书的指纹,这样其他人就无法使用您的经纪人主机名从另一个公共 CA 获取证书(不太可能,但对于政府级别的参与者来说是可能的)。如果包含指纹,那么您将需要尽早获取替换证书,并将新指纹与旧指纹一起添加到应用程序中,并在证书过期之前发布更新,以便用户有足够的时间进行更新。
  2. 您使用自己的私有 CA 签名的证书,并将 CA 证书烘焙到您的应用程序中,如果 CA 证书即将过期,那么您将需要再次发布新版本的应用程序,并有足够的时间供用户升级。

如果您使用的是 MQTT 代理托管提供商,那么他们很可能会使用公共证书 CA,因此您只能真正执行选项 1,并且很可能无需进行指纹识别,因为您无法提前访问所使用的证书。用于签署代理证书的 CA 证书可能会在 10-50 年后到期,因此在设备的使用寿命内不需要更换。

如果您正在进行相互 TLS 身份验证,那么您需要一种为每个客户端创建签名证书的方法,您不应该重复使用客户端证书,因为这会破坏客户端证书的意义。

要正确执行客户端证书,客户端应该生成自己的私钥(并且永远不要与其他任何人共享),然后生成证书签名请求,将其发送到 CA 进行签名,然后接收回客户端证书与私钥一起使用来验证其自身。每次此客户端证书过期时,它都应该使用现有的私钥生成新的 CSR 并再次由 CA 签名。

AWS IoT 等物联网系统可以提供客户端证书配置 iirc。

© www.soinside.com 2019 - 2024. All rights reserved.