我正在使用支付网关处理信用卡。要将数据发布到他们的服务器,我在PHP中使用cURL。我向我的域发布了SSL证书,以确保所有POST数据都已加密。由于已安装SSL证书,我是否仍需要使用cURL的SSL选项?如果是这样,根据我的设置,我需要设置哪个选项?
我尝试了以下代码失败:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://secure.paymentgateway.com/blah.php");
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CAINFO, getcwd().'/cert/ca.crt');
curl_setopt($ch, CURLOPT_SSLCERT, getcwd().'/cert/mycert.pem');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'password');
curl_setopt($ch, CURLOPT_POST, $count);
curl_setopt($ch,CURLOPT_POSTFIELDS,"variables...");
$output = curl_exec($ch);
echo $output;
curl_close($ch);
答案 0 :(得分:1)
您已经停用了验证(我不建议这样做:curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
)。这打开了你的中间人攻击。
这是一个可以帮助您的简单教程:
http://developer.paypal-portal.com/pdn/board/message?board.id=ipn&message.id=12754#M12754