首页 文章

根据它的指纹检查自签名证书是否安全?

提问于
浏览
3

我目前正在开发一个由嵌入式服务器(包括小型显示器)和一些移动设备(目前只是Android手机)组成的小型系统 .

这些移动设备应该能够通过安全通道与嵌入式服务器通信 . 为此,服务器在第一次引导过程中生成自签名SSL证书 .

如果新的移动设备应连接到服务器,则服务器会显示以下QR码:

  • 服务器IP

  • SSL证书指纹

  • 随机设备ID

用户使用他的移动设备扫描该QR码 . 移动设备连接到服务器并检查SSL证书指纹是否与之前扫描的指纹匹配 .

这被认为是安全的吗?如果没有,你会如何解决这个问题?

An alternative approach:

在第一次启动时,服务器生成证书请求并将其发送到签署证书的中央CA服务器 . 客户端设备已安装CA证书并根据它验证服务器证书 .

但是,每个人都可以向CA服务器发送证书请求,并获得签名证书 . (可以使用“主密钥”为CA服务器实现某些身份验证,但一旦从系统映像中提取,则整个身份验证变得无用) . 此外,此设置需要中央服务器,我喜欢避免,因为该产品可能在“离线”环境中使用 .

1 回答

  • 1

    是的,这被认为是安全的,因为服务器证书的指纹通过可信机制传输到客户端(物理上靠近服务器以通过难以篡改传输机制来接收指纹) . 如果在初始设置之后要尝试MITM攻击,即使服务器名称相同,也会生成不同的密钥,因此指纹会有所不同,客户端会检测到这一点,并且可以适当地拒绝通信 .

    也可以认为这种方法更安全,因为客户端不需要trust a 3rd party to verify the authenticity的证书 . CAs do occasionally issue fraudulent certificates .

相关问题