我有一个证书文件" 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);
答案 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:证书验证失败