我一直在本地开发一个针对集中登录进行身份验证的站点。其中一个步骤是要求我向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调用返回0
的http_code
。当我将其设置为FALSE
时,它返回的状态码为200
如何在linux上启用SSL_VERIFYHOST
?
任何帮助都将非常感激。谢谢你。
对于'2',您必须确保SSL证书中的通用名称与正在使用的主机名相匹配。这是默认设置,只要您的SSL证书是为您正在使用它的主机名(通用名称)创建的,就应该是直接的。
从PHP的curl_setopt手册:
1检查SSL对端证书中是否存在通用名称。2检查是否存在通用名称,并验证它是否与所提供的主机名匹配。在生产环境中,该选项的值应该保持为2(默认值)。
手动输入