禁用CURLOPT_SSL_VERIFYHOST(libcurl/openssl)的安全后果

17

启用CURLOPT_SSL_VERIFYPEER和禁用CURLOPT_SSL_VERIFYHOST会带来哪些安全后果?

1个回答

34

为了将其比喻为现实生活中的情况,VERIFYPEER 就像检查您认可的 ID 表单(例如来自您信任的国家的护照、来自您了解的公司的员工卡等)。 VERIFYHOST 就像检查卡上的实际姓名是否与您想要交流的人相匹配。

如果您不使用 VERIFYHOST(正确的值是 2,而不是 1),则会禁用主机名验证并为中间人攻击打开大门:任何拥有您信任的一种 ID 的人都可以假冒在您信任的 ID 集合内的任何人,例如任何持有有效护照的人都可以假扮成任何其他持有有效护照的人。


你为什么想要连接IP地址?这是来自你自己的CA证书(或者是自签名的)吗? - Bruno
我有两个服务器(1.1.1.1和2.2.2.2),example.com的DNS包含这些IP地址的2个A记录。客户端随机选择其中一个并连接到IP地址而不是主机名。我希望在openSSL检查公共名称字段时调用我,以便我可以将证书公共名称与example.com进行比较,如果一切正常,我将接受该证书。我没有看到libcurl支持此功能,因此我认为我必须编写自己的实现。example.com的证书是可信的Verisign证书。 - user1782427

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接