如何在我的操作系统/PHP上启用CURLOPT_SSL_VERIFYHOST = 2支持


How to enable CURLOPT_SSL_VERIFYHOST = 2 support on my OS/PHP

我一直在本地开发一个针对集中登录进行身份验证的站点。其中一个步骤是要求我向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上读过(禁用CURLOPT_SSL_VERIFYHOST (libcurl/openssl)的安全后果)帖子这些选项意味着什么。

在我的开发机器上,CURLOPT_SSL_VERIFYHOST 2一直工作良好。我只是使用香草php安装提供在ubuntu 12.04 php5包,和php5-curl。

在生产(rackspace cloudsites)中,CURLOPT_SSL_VERIFYHOST 2不工作,这就是为什么我将其更改为false以验证这是问题。看到我没有明确地做任何事情来启用这个在我的本地主机上,我不知道什么指令/配置选项控制这一点。

我的意思是"不工作"是指在生产中,当VERIFYHOST被设置为2时,curl调用返回0http_code。当我将其设置为FALSE时,它返回的状态码为200

我的问题是:

如何在linux上启用SSL_VERIFYHOST ?

任何帮助都将非常感激。谢谢你。

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

从PHP的curl_setopt手册:

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

手动输入