Won*_*and 11 php apache ssl curl
我正在测试一个使用curl_execphp函数和CA证书的API,但出了点问题,我有点迷失了.
我在我的apache VirtualHost上配置了SSL并且看起来没问题(打开https:://[myVHost]......工作).
然而API curl调用给我回复此消息:
SSL peer certificate or SSH remote key was not OK我对SSL不是很有经验,所以我对其原因几乎没有任何想法.
更新:
这是我在我的cURL请求中使用的代码,我已经评论了2行并更改了它们的值(看看'TODO'行)并且这样它正在工作,但这只是一个工作周围...
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_RETURNTRANSFER] = true;
$opts[CURLOPT_CONNECTTIMEOUT] = 50;
$opts[CURLOPT_TIMEOUT] = 100;
$headers = array(
'Accept: application/json',
"User-Agent: APIXXX-PHP-Client");
$opts[CURLOPT_HTTPHEADER] = $headers;
$opts[CURLOPT_USERPWD] = $env->getApiKey() . ':';
if (certificatePresent()) {
// $opts[CURLOPT_SSL_VERIFYPEER] = true;
// $opts[CURLOPT_SSL_VERIFYHOST] = 2;
// TODO: SET IT BACK
$opts[CURLOPT_SSL_VERIFYPEER] = 0;
$opts[CURLOPT_SSL_VERIFYHOST] = 0;
$opts[CURLOPT_CAINFO] = $path
}
curl_setopt_array($curl, $opts);
$response = curl_exec($curl);
Run Code Online (Sandbox Code Playgroud)
您可能正在使用自签名SSL证书,但在设置CURLOPT_SSL_VERIFYPEER选项时不会通过。
有两种解决方案:
如果禁用验证,则不能确定您是否真的在与主机通信。因此,这取决于您需要的安全级别。
小智 5
除了CURLOPT_SSL_VERIFYPEER其他两个设置可能会更改为false/ 0:
CURLOPT_SSL_VERIFYHOST
CURLOPT_SSL_VERIFYSTATUS
Run Code Online (Sandbox Code Playgroud)
请注意,您应该修复 SSL 证书和设置,而不是禁用安全性!
| 归档时间: |
|
| 查看次数: |
40045 次 |
| 最近记录: |