php curl : SSL_VERIFYPEER option doesn't have effect

标签 php curl ssl

我有这段代码可以使用 curl 启动查询:

function curl_query($full_url, $username, $password, $payload) {
    $additionalHeaders = "";
    $process = curl_init($full_url);
    curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded', $additionalHeaders));
    curl_setopt($process, CURLOPT_HEADER, 0);
    curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
    curl_setopt($process, CURLOPT_TIMEOUT, 30);
    curl_setopt($process, CURLOPT_POST, 1);
    curl_setopt($process, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($process, CURLOPT_MAXREDIRS, 4);
    curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($process, CURLOPT_SSL_VERIFYPEER, FALSE);
    $return = curl_exec($process);
    if ($return === false) {
        error_log("CURL error ".curl_error($process));
    }
    return $return;
}

选项 CURLOPT_SSL_VERIFYPEER 设置为 false,这样我就可以读取带有自签名证书的页面。但是,当我针对 https URL 执行此代码时,出现错误:

CURL error SSL: certificate subject name 'localhost' does not match target host name '192.168.1.1',

我在安装了 php53 软件包的 CentOS 5 服务器上运行这段代码。

提前致谢

最佳答案

添加选项 CURLOPT_SSL_VERIFYHOST

curl_setopt($process, CURLOPT_SSL_VERIFYHOST, FALSE);

我意识到,英文版的 PHP 文档缺少以下重要信息:

(翻译自德语版的 PHP 手册)

CURLOPT_SSL_VERIFYHOST has to be set to true or false if CURLOPT_SSL_VERIFYPEER has been deactivated.

关于php curl : SSL_VERIFYPEER option doesn't have effect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16220172/

相关文章:

php - 如何使用 laravel view composer 排除某些 View

php - 如何在 PHP 中从 URL 下载多个文件?

python - 如何使用 pycurl 读取标题

java - 使用 httpClient 和 cert.em 的 https post 请求

php - 需要帮助从 PHP 的混合源在 Swift 中准备 JSON

php - 使用 php 从数据库获取数据并作为电子邮件附件发送

php - 将 array 中的参数传递给构造函数

发送 HEAD 请求时 cURL 挂起 15 秒

Python HTTPS 服务器 - 证书验证

Android 安全/加密套接字