【问题标题】:How to enable CURLOPT_SSL_VERIFYHOST = 2 support on my OS/PHP如何在我的 OS/PHP 上启用 CURLOPT_SSL_VERIFYHOST = 2 支持
【发布时间】:2013-03-11 05:31:13
【问题描述】:

我一直在本地开发一个针对集中式登录进行身份验证的站点。其中一个步骤是要求我向 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 (Security consequences of disabling CURLOPT_SSL_VERIFYHOST (libcurl/openssl)) 上阅读过这些选项的含义。

在我的开发机器上CURLOPT_SSL_VERIFYHOST 2 工作正常。我只是使用 ubuntu 12.04 php5 包和 php5-curl 中提供的 vanilla php 安装。

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

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

我的问题是:

如何在 linux 机器上启用SSL_VERIFYHOST

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

【问题讨论】:

标签: php ssl curl


【解决方案1】:

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

来自 PHP curl_setopt 手册:

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

Manual Entry for curl_setopt

【讨论】:

    猜你喜欢
    • 2016-08-15
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2021-01-01
    • 2017-01-19
    • 1970-01-01
    相关资源
    最近更新 更多