SSL对等证书或SSH远程密钥不正常

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)

Dan*_*lde 6

您可能正在使用自签名SSL证书,但在设置CURLOPT_SSL_VERIFYPEER选项时不会通过。

有两种解决方案:

  1. 购买有效的SSL证书。
  2. 在Curl中禁用SSL验证。(添加--insecure选项

如果禁用验证,则不能确定您是否真的在与主机通信。因此,这取决于您需要的安全级别。


小智 5

除了CURLOPT_SSL_VERIFYPEER其他两个设置可能会更改为false/ 0

CURLOPT_SSL_VERIFYHOST
CURLOPT_SSL_VERIFYSTATUS
Run Code Online (Sandbox Code Playgroud)

请注意,您应该修复 SSL 证书和设置,而不是禁用安全性!