PHP cURL - >下载带证书的文件&密码

时间:2014-08-22 13:24:34

标签: php curl https download ssl-certificate

我有一个证书文件" cert.p12"和此证书的密码" yxc123yxc"。 有了这个,我可以在网站上进行身份验证,下载一个xml文件。

我怎么能在PHP中这样做?试过这样,但是" $ response"是假的。

$cert = "cert.p12";
$pass = "yxc123yxc";
$url  = "https://url.to.download";

$curlhandle = curl_init();

curl_setopt($curlhandle, CURLOPT_URL, $url);
#curl_setopt($curlhandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlhandle, CURLOPT_PORT , 443); 
curl_setopt($curlhandle, CURLOPT_SSLVERSION, 3);
curl_setopt($curlhandle, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curlhandle, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curlhandle, CURLOPT_SSLCERT, getcwd() . $cert);
curl_setopt($curlhandle, CURLOPT_SSLCERTPASSWD, $cert);
$response = curl_exec($curlhandle);

2 个答案:

答案 0 :(得分:0)

我猜证书的路径错误,因为PHP函数getcwd返回没有结束斜杠的路径。因此,您的证书路径可能如下所示:

/var/www/website/directorycert.p12

对于知道如何调试程序的编程来说,这绝对是必不可少的。始终使用函数,它返回您尝试调试的错误代码和操作消息。同时打印变量值,看它们是否包含您期望的内容。

您也可以使用一些调试器(对于PHP,例如一个名为Xdebug的调试器)。如果您将IDE与该调试器连接起来,则不必手动打印变量值,您可以逐步执行脚本等。

答案 1 :(得分:0)

刚刚添加

curl_setopt($curlhandle, CURLOPT_SSLCERTTYPE, "P12"); 

到php代码

=> curl_error:    SSL证书问题,验证CA证书是否正常。细节:    错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败