代码之家  ›  专栏  ›  技术社区  ›  chris166

通过比较证书指纹进行SSL身份验证?

  •  15
  • chris166  · 技术社区  · 17 年前

    我们有一个嵌入式设备,上面有一个小型网络服务器,我们可以在上面安装我们自己的SSL自签名证书。客户端是写的。NET(但这并不重要)。

    证书的 在数据库中?

    我的理解是,指纹是整个证书的哈希值,包括公钥。冒充我的设备当然可以发送相同的公共证书,但它不知道私钥,对吧?

    或者,我必须建立自己的信任链,创建自己的CA根证书,签署web服务器证书并将其安装在客户端上吗?

    3 回复  |  直到 17 年前
        1
  •  4
  •   Accipitridae    17 年前

    key signing parties 在这里,参与者通常只需交换他们的姓名和公钥指纹,并确保聚会上的人真的是他/她声称的人。仅仅验证指纹比验证长公钥要容易得多。

    另一个例子是所谓的 self certifying file system

    这个方案和你提出的方案比使用CA更简单。但也有一个缺点。你必须确保你的哈希数据库是真实的。如果你的数据库很大,那么这可能会很困难。如果你使用CA,那么你只需要确保根密钥是真实的。这通常会大大简化密钥管理,当然也是基于CA的方案比上述自认证文件系统更受欢迎的原因之一。

        2
  •  3
  •   Chris W. Rea    17 年前

    同样,你不会也不应该仅仅因为两个对象的哈希码匹配就认为它们是相等的,你也不应该因为一个证书的指纹出现在“已知证书指纹”列表中就认为它是真实的。

        3
  •  1
  •   Marvin Winkler    8 年前

    短:

    理论上,你完全可以做证书颁发机构为你做的事情。所以应该没问题。

    比较长的:

    当证书颁发机构对您的公钥/证书/证书请求进行签名时,它不会对整个证书数据进行签名。但只是整个证书数据的计算哈希值。

    当您不想建立自己的CA或使用商业/免费CA时-