【问题标题】:What's the current advice on CURLOPT_SSL_VERIFYPEER?当前关于 CURLOPT_SSL_VERIFYPEER 的建议是什么?
【发布时间】:2019-05-26 18:21:03
【问题描述】:

目前关于 CURLOPT_SSL_VERIFYPEER 的建议是什么?传统上我总是将其设置为 false,因为它在获取 https:// URL 时总是会导致问题。

但现在我读到一条评论说这允许“中间人”攻击,我已经隐约知道了,我应该下载 https://curl.haxx.se/docs/caextract.html 文件并设置 curl.cainfo 配置指令。这只能在 php.ini 文件中设置,这会使一切变得一团糟。如果有的话,我想在我的实际应用程序中设置它。最好不必全部设置,我仍然不明白为什么首先需要设置...

我该怎么办?我不想要 MITM 攻击。为什么 PHP 没有提供适当的此类文件?有什么问题?

【问题讨论】:

  • 您不应该关闭它,因为它很有用。如果您无法访问 https 站点,则表示您没有下载/安装最新的证书。
  • 为什么我没有那个?
  • 而且不是“HTTPS 站点”,而是“一些 HTTPS 站点”。
  • 这解释了为什么您需要启用它。 curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html
  • 正确配置和更新的操作系统、PHP 和 curl 将正确设置证书包。您还可以指定一个 CA 包与 curl 选项 CURLOPT_CAINFO 一起使用,因此可以在 php.ini 之外完成。

标签: php curl


【解决方案1】:

来自https://paragonie.com/blog/2017/10/certainty-automated-cacert-pem-management-for-php-software#verify-peer的好回答

如果禁用 CURLOPT_SSL_VERIFYPEER 会发生什么?如果你禁用 此检查,您选择退出证书颁发机构 基础设施,这意味着你选择了盲目接受 自签名证书。

这会使您面临极其微不足道的中间人攻击。全部 拦截代理需要做的是提供一个自签名证书 PHP 只会信任它,但前提是您将其关闭。

在当今的生态系统中,使用它的唯一真正原因是,如果您是 使用 CURLOPT_PINNEDPUBLICKEY 并且由于某种原因不能使用 让我们加密。

您应该继续使用它,并确保您正在使用的任何网站都具有来自受信任 CA 的良好证书(例如付费证书或 LetsEncrypt 的免费证书)

可以在应用程序级别设置哪些证书应该有效和受信任的最新文件。更多详细信息在上面的链接中,并且有一个由该帖子的同一作者完成的开源项目:https://github.com/paragonie/certainty

您可以根据需要使用它,或者只是看看它的作用并自己构建它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多