我一直在本地开发一个网站,根据中心登录进行身份验证.其中一个步骤是要求我向https资源发出curl请求以获取访问令牌.
curl配置的一部分是:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
Run Code Online (Sandbox Code Playgroud)
如您所见,我注释掉了CURLOPT_SSL_VERIFYHOST选项.我已经阅读了php.net和各种博客/ stackoverflow(禁用CURLOPT_SSL_VERIFYHOST(libcurl/openssl)的安全后果)发布这些选项意味着什么.
在我的开发机器CURLOPT_SSL_VERIFYHOST 2
上一直很好.我只是使用ubuntu 12.04 php5包中提供的vanilla php安装,以及php5-curl.
在生产(rackspace cloudsites)CURLOPT_SSL_VERIFYHOST 2
上没有工作,这就是我将其更改为false以验证这是问题的原因.看到我没有明确地做任何事情来在我的localhost上启用它我不知道什么指令/配置选项控制这个.
我的意思是"不工作"是对生产的卷曲调用返回的http_code
的0
时候VERIFYHOST
被设置为2
.当我将其设置为时,FALSE
它返回的状态代码为200
我的问题是:
我如何SSL_VERIFYHOST
在Linux机器上启用?
任何帮助将不胜感激.谢谢.
对于'2',您必须确保SSL证书中的公用名与正在使用的主机名匹配.这是默认值,只要为您正在使用它的主机名(通用名称)正确创建SSL证书,这应该是直接的.
从PHP curl_setopt手册:
1检查SSL对等证书中是否存在公用名.2检查是否存在公用名,并验证它是否与提供的主机名匹配.在生产环境中,此选项的值应保持为2(默认值).