从CURL到PHP CURL的转换
我正在运行下面的Curl请求,它正在工作从CURL到PHP CURL的转换,php,ssl,curl,Php,Ssl,Curl,我正在运行下面的Curl请求,它正在工作 curl -v --cert /path/to/certs/myCert.crt --key /path/to/key/myKey.key --cacert /path/to/chainedcerts/intermediary.pem https://mysite:30009/ 将其转换为php,如下所示,失败的原因是错误77,没有叙述。我想可能是文件权限的问题。我正在使用nginx,3个证书归nginx用户所有。如果有其他方法,我可以像查看其他错
curl -v --cert /path/to/certs/myCert.crt --key /path/to/key/myKey.key --cacert /path/to/chainedcerts/intermediary.pem https://mysite:30009/
将其转换为php,如下所示,失败的原因是错误77,没有叙述。我想可能是文件权限的问题。我正在使用nginx,3个证书归nginx用户所有。如果有其他方法,我可以像查看其他错误一样查看错误描述
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "xmlRequest=" . $xml);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Expect:','Content-Type: text/xml']);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSLCERT, "/path/to/certs/myCert.crt");
curl_setopt($ch, CURLOPT_SSLKEY, "/path/to/key/myKey.key");
curl_setopt($ch, CURLOPT_CAINFO, "/path/to/chainedcerts/intermediary.pem ");
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
Log::error($httpcode .' : '. curl_errno($ch) .' : '. curl_error($ch));
curl_close($ch);
这是一个验证证书的问题。它是自签名证书吗?如果是,请不要验证对等方/主机,将这些设置为false。它是自签名的。当我将verify peer/host设置为false时,我担心MITM攻击。但不管怎样,我都会出错。35未找到客户端证书35?你说你的错误是77@delboy1978uk当我将值设置为false时。错误变为35。问题是我要发布到的API服务器正在使用自签名SSL。