PHP-cURL-SSL证书
我在尝试使用curl执行GET方法以从远程webapi获取xml时遇到了一种情况PHP-cURL-SSL证书,php,ssl,curl,key,Php,Ssl,Curl,Key,我在尝试使用curl执行GET方法以从远程webapi获取xml时遇到了一种情况 $url = 'xxxx.com' $key = '/KEY/PRIVATE.KEY' $perm = '/KEY/CERT.PEM' $options = array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL
$url = 'xxxx.com'
$key = '/KEY/PRIVATE.KEY'
$perm = '/KEY/CERT.PEM'
$options = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSLCERT => $perm ,
CURLOPT_SSLKEY => $key,
CURLOPT_HEADER => false,
);
$curl = curl_init();
curl_setopt_array($curl , $options);
$resp = curl_exec($curl);
curl_close($curl);
我必须链接SSL证书和pem,但是$resp总是作为false返回
这就是我的cURL请求应该在命令提示符中显示的内容:
curl -k -v -X GET "[-URL-]" --cert ./KEY/CERT.pem --key ./KEY/PRIVATE.KEY
任何帮助都将不胜感激
编辑
因此,我使用了两种方法来尝试调试:
使用stderr
我有:
string ''.' unknown as intern or extern command, program file or executable file
' (length=117)
通过die(curl\u error($curl))
我得到了以下结果:
unable to use client certificate (no key found or wrong pass phrase?)
所以,我实际上用两个字符串($URL=a.b
)来创建我的URL,但这应该是可行的,还是我疯了
对于ssl错误,我不明白为什么会出现这个问题,因为它在命令提示符下完全可以正常工作
编辑2
因此,我找到了部分解决问题的方法:我必须使用realpath()
但现在我有一个新问题:
SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
所以,我在stackoverflow上找到了一些响应,说要更新cacert.pem文件。
我做到了,添加了CURLOPT\u CAINFO=>$CAINFO,
在$options
中,将curl.cainfo=“PATH_TO/cacert.pem”
放在我的php.ini
中(apache+php=>WAMP)。(PATH_TO
已被我的真实路径替换)
无论如何,在所有这些改变之后,我仍然有同样的问题。
我必须在PHP5.3下工作,这是原因吗
编辑3
终于找到了我的答案。我应该更仔细地寻找卷曲选项
在命令提示符下-k
允许不安全的连接
因此,在php中,我只需将CURLOPT_VERIFYPEER
设置为false
。
仅供参考,我基于远程web api提供给我的文档
关于,模具(旋度错误($curl))
。布尔值false表示发生错误,curl_error()将告诉您错误是什么。cf edit。(谢谢)die(curl\u error($curl))
。布尔值false表示发生错误,curl_error()将告诉您错误是什么。cf edit。(谢谢)