6

我一直在本地开发一个站点,该站点针对集中式登录进行身份验证。其中一个步骤是要求我向 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上一直运行良好。我只是使用 ubuntu 12.04 php5 包和 php5-curl 中提供的 vanilla php 安装。

在生产(机架空间云站点)上CURLOPT_SSL_VERIFYHOST 2不起作用,这就是为什么我将其更改为 false 以验证这是问题所在。看到我没有明确地在我的本地主机上启用它,我不知道是什么指令/配置选项控制它。

我的意思是“不工作”是在生产中 curl 调用正在返回一个http_codeof0VERIFYHOST设置为2. 当我将它设置为它时,FALSE它返回一个状态代码200

我的问题是:

如何SSL_VERIFYHOST在 linux 机器上启用?

任何帮助将不胜感激。谢谢你。

4

1 回答 1

7

对于“2”,您必须确保 SSL 证书中的公用名与正在使用的主机名匹配。这是默认设置,只要您的 SSL 证书是为您使用它的主机名(公用名)适当创建的,就应该是直截了当的。

从 PHP curl_setopt 手册:

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

curl_setopt 的手动输入

于 2013-03-21T15:49:48.667 回答