仅验证CA是否签署了SSL证书?

时间:2014-06-18 10:19:29

标签: ruby ssl openssl self-signed ca

我正在建立一个图书馆来讨论第三方的网络服务,我们直接通过IP连接。该服务受SSL保护,我们提供客户证书以识别我们。他们提供的证书是自签名的,我有CA公钥,所以很好,但他们的证书的CN是一个电子邮件地址,所以它不被视为有效。

无论如何只能验证证书是否由CA签名?我使用Ruby是有帮助的,尽管我认为它更像是一个OpenSSL的东西。另一种方法是不验证他们的证书,但我显然不愿意这样做。

(如果您想知道,要求他们更改证书或添加主机名并不是一个选项。这是企业:D)

1 个答案:

答案 0 :(得分:2)

只检查CA而不是主机名提供的安全性与根本不检查一样多。例如。如果CA发布google.com并且相同的CA发出attacker.com,我可以使用certificateer.com的证书合并google.com,如果您不检查证书中的名称是否与目标名称匹配。< / p>

如果您已经知道预期的对等证书,并且您只是想确保连接到提供此证书的主机,则应该可以禁用任何内置证书验证并检查证书后的指纹。 SSL连接已建立。 我不太了解ruby,但这可能意味着使用peer_cert方法访问证书,然后使用to_pemto_der来获取字符串表示,您可以用于比较您的期望(或提取公钥进行比较)。