【发布时间】:2013-03-11 05:31:13
【问题描述】:
我一直在本地开发一个针对集中式登录进行身份验证的站点。其中一个步骤是要求我向 https 资源发出 curl 请求以获取访问令牌。
curl 配置的一部分是:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
如您所见,我注释掉了 CURLOPT_SSL_VERIFYHOST 选项。我在 php.net 和各种博客/stackoverflow (Security consequences of disabling CURLOPT_SSL_VERIFYHOST (libcurl/openssl)) 上阅读过这些选项的含义。
在我的开发机器上CURLOPT_SSL_VERIFYHOST 2 工作正常。我只是使用 ubuntu 12.04 php5 包和 php5-curl 中提供的 vanilla php 安装。
在生产(机架空间云站点)中,CURLOPT_SSL_VERIFYHOST 2 不起作用,这就是为什么我将其更改为 false 以验证这是问题所在。看到我没有明确地在我的本地主机上启用它,我不知道是什么指令/配置选项控制它。
我的意思是“不工作”是在生产中当VERIFYHOST 设置为2 时,curl 调用返回0 的http_code。当我将其设置为FALSE 时,它返回的状态代码为200
我的问题是:
如何在 linux 机器上启用SSL_VERIFYHOST?
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
curl 的默认值为
2用于此设置:php.net/manual/en/function.curl-setopt.php