如何在我的OS/PHP上启用CURLOPT_SSL_VERIFYHOST = 2支持

dm0*_*514 5 php ssl curl

我一直在本地开发一个网站,根据中心登录进行身份验证.其中一个步骤是要求我向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_code0时候VERIFYHOST被设置为2.当我将其设置为时,FALSE它返回的状态代码为200

我的问题是:

我如何SSL_VERIFYHOST在Linux机器上启用?

任何帮助将不胜感激.谢谢.

Mar*_*lav 5

对于'2',您必须确保SSL证书中的公用名与正在使用的主机名匹配.这是默认值,只要为您正在使用它的主机名(通用名称)正确创建SSL证书,这应该是直接的.

从PHP curl_setopt手册:

1检查SSL对等证书中是否存在公用名.2检查是否存在公用名,并验证它是否与提供的主机名匹配.在生产环境中,此选项的值应保持为2(默认值).

curl_setopt的手动输入