我正在用 PHP 编写一个投注机器人,投注站需要发送 SSL 证书以进行自动连接。
我有各种自签名证书可供使用:cert.crt、cert.pem、cert.p12以及密钥cert.key,我正在使用 curl 建立登录连接,但我似乎无法为连接获取正确的 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的组合之后,似乎根本没有任何效果。
任何帮助将不胜感激。:)