关于CURLOPT_SSL_VERIFYPEER的当前建议是什么?传统上,我总是将其设置为false,因为在获取https:// URL时,它始终会引起问题。
但是现在我读到一条评论,说这允许“中间人”攻击(我已经隐约知道),并且我应该下载https://curl.haxx.se/docs/caextract.html文件并设置curl.cainfo config伪指令。而且只能在php.ini文件中进行设置,这会使一切变得一团糟。我想在我的实际应用程序中进行设置。最好不必全部设置,但我仍然不明白为什么首先需要这样做...
我该怎么办?我不要MITM攻击。为什么PHP没有随附适当的此类文件?有什么问题吗?
答案 0 :(得分:2)
如果禁用CURLOPT_SSL_VERIFYPEER会发生什么?如果禁用 这张支票,就是您选择退出证书颁发机构 基础设施,这意味着您已选择盲目接受 自签名证书。
这使您容易受到中间人的极端攻击。所有 拦截代理需要做的是提供一个自签名证书 并且PHP只会信任它,但前提是您将其关闭。
在当今的生态系统中,使用此功能的唯一真正原因是 使用CURLOPT_PINNEDPUBLICKEY,由于某种原因无法使用 LetsEncrypt。
您应该继续使用它,并确保您正在卷曲的任何站点都具有来自受信任CA的良好证书(例如,来自LetsEncrypt的付费证书或免费证书)
可以在应用程序级别上设置哪些证书有效和受信任的最新文件。上面的链接中有更多详细信息,并且有一个开源项目由帖子的同一作者进行:https://github.com/paragonie/certainty
您可以根据需要使用它,也可以仅查看它的功能并自己构建。