5

我正在研究的系统架构需要比较两个 SSL/TLS(通常是 X.509)证书。也就是说,我需要验证两个证书是否相同。

我不在乎它们是否过期或自签名,我只是想确保它们没有以任何方式被更改。

执行此类操作的最正确方法是什么?比较这些证书的两个签名(两个字节 [])是否就足够了,或者这个操作是否容易出现我迄今为止没有考虑过的漏洞?

4

1 回答 1

4

我认为比较这两个签名是不够的,除非您的代码直接从某个实例获取证书,以确保签名也已针对证书本身进行了检查。所以在很多情况下,我会说:

我相信最灵活、最正确的方法是分别检查两个证书(正文与签名)的完整性,然后直接比较证书中需要相同的所有信息。(我这样说是因为我不确定您需要完全身份)。

但是,如果您的目标确实是检查服务器发送的证书的真实性,那么在您的代码中拥有整个证书的副本并不一定是明智的;在这种情况下,您可以验证服务器的证书,然后根据存储在您的应用程序中的安全哈希检查其正文。

于 2013-03-15T11:10:30.647 回答