SSL之前的cURL(可用):
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$api_call_url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
SSL后的cURL(不起作用):
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$api_call_url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, "/customers_path_on_their_server/to/our_cacert_they_exported_via_firefox.crt"); //X.509 Certificate
$result = curl_exec($ch);
curl_close($ch);
除了要求客户在其 REST 集成代码中添加 CURLOPT_SSL_VERIFYPEER、CURLOPT_SSL_VERIFYHOST 和 CURLOPT_CAINFO 之外,我需要在我们的服务器上设置什么吗?
我对 HTTPS 真的是个新手,不知道我需要搜索什么术语,已经搜索了几个小时的 cURL SSL ……
顺便说一下,如果这些信息有用的话,我们的站点使用亚马逊 EC2 托管……
这是返回的 cURL 错误:
error:SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
cURL版本:7.21.6
SSL版本:OpenSSL/1.0.0e
CURLOPT_SSL_VERIFYPEER, 0
和CURLOPT_SSL_VERIFYHOST, 0
即可解决此错误,无需添加证书。(如果您信任源,则无需进行验证)。 - Cyborg