通过比较证书指纹进行SSL认证?

chr*_*166 14 security authentication hash ssl

所有SSL专家的问题:

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

如何在.NET中验证设备?是否足以证书的指纹与数据库中的已知条目进行比较

我的理解是指纹是整个证书的散列,包括公钥.伪装成我的设备的设备当然可以发送相同的公共证书,但它无法知道私钥,对吧?

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

Acc*_*dae 5

你的建议原则上是可以的。例如,它在关键签名派对期间使用。在这里,参与者通常只是交换他们的姓名和公钥指纹,并确保聚会上的人确实是他/她所声称的人。仅验证指纹比验证长公钥要容易得多。

另一个例子是所谓的自认证文件系统。这里同样只有公钥的哈希值通过安全通道进行交换。(即,这些哈希值嵌入在 URL 中。)在此方案中,不必安全地发送公钥。接收方只需检查公钥的哈希值是否与 URL 中嵌入的哈希值相匹配。当然,接收者还必须确保这些 URL 来自可信来源。

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