【问题标题】:Curl SSL Request 400 Bad Request卷曲 SSL 请求 400 错误请求
【发布时间】:2014-10-15 14:51:18
【问题描述】:

我正在尝试使用 php 和 curl 发出请求。这是我从命令行使用的一个工作示例

curl -k --cacert c:/cert/server_ca.pem  --cert c:/cert/signed_client_cert.pem --key c:/cert/cert_req_rsa_private_key.pem 

这是我目前所拥有的,它返回一个 400 错误的请求,有谁知道我怎样才能得到更多有用的错误或我可能做错了什么?

ini_set('display_errors',1);
//phpinfo();

$cert = "C:/cert/signed_client_cert.pem";
$key = "C:/cert/cert_req_rsa_private_key.pem";
$pass = "key1123";
$caInfo = "C:/cert/server_ca.pem";


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.apitest.com/v/2/products/04003274058");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CAINFO, $caInfo);
curl_setopt($ch, CURLOPT_SSLCERT, $cert);
curl_setopt($ch, CURLOPT_SSLKEY, $key);
curl_setopt($ch, CURLOPT_VERBOSE, true);
//curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $pass);
//curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
//curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $pass);
//curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');


$response = curl_exec($ch);
echo curl_error($ch);
echo var_dump($response);

【问题讨论】:

    标签: php curl ssl https openssl


    【解决方案1】:

    curl 命令不完整,因此很难说可能(或可能不会)有什么不同。但从命令行,Curl 使用Accept: */*;并且不使用Content-Type(请参阅下面的Wireshark 捕获curl www.google.com))。

    要了解 AcceptContent-Type 之间的区别,请参阅 Webmasters Stack Exchange 上的 Difference between accept and content-type http headers


    只是自行车脱落,但这还有改进的余地:

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    

    如果您觉得必须这样使用它,请选择匿名协议。它将避免服务器发送其证书,因为无论如何都没有验证任何内容。

    【讨论】:

      【解决方案2】:

      奇怪的是问题似乎是 PHP 的 curl 中的一个错误,我切换到 httprequest 并且它工作了

      【讨论】:

        猜你喜欢
        • 2016-02-29
        • 2011-04-22
        • 1970-01-01
        • 2018-09-20
        • 2019-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多