使用cURL的SSL证书请求

时间:2013-10-15 18:30:26

标签: php curl ssl https bots

我正在用PHP编写投注机器人,并且投注机构需要发送SSL证书以进行自动连接。

我有各种各样的自签名证书可供使用: cert.crt,cert.pem,cert.p12 以及密钥 cert.key 和我正在使用curl来建立登录连接,但我似乎无法获得正确的连接卷曲参数。

使用以下命令行,我可以建立成功的连接:

curl -q -k --cert cert.crt --key cert.key https://api.domain.com/certificatelogin/endpoint -d "username=UUUUUUU&password=XXXXXXX" -H "X-Application: appKey"

这个也有效:

curl -q -k --cert cert.pem https://api.domain.com/certificatelogin/endpoint -d "username=UUUUUUU&password=XXXXXXX" -H "X-Application: appKey"

我目前使用的PHP代码如下:

$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.domain.com/certificatelogin/endpoint");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'X-Application: ' . $appKey,
        'Accept: */*',
        'Content-Type: application/x-www-form-urlencoded'
    ));
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_SSLCERT, "path/to/cert/cert.pem");

    $postData = 'username=UUUUUUUUU&password=XXXXXXXXXXX';

    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

    $response = json_decode(curl_exec($ch));
    echo 'Response: ' . json_encode($response);

使用 .crt .key 尝试了这么多组合后,似乎无法使任何功能完成。

非常感谢任何帮助。 :)

0 个答案:

没有答案