首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSL对等证书或SSH远程密钥不确定。

SSL对等证书或SSH远程密钥不确定。
EN

Stack Overflow用户
提问于 2013-01-07 09:11:33
回答 8查看 149.3K关注 0票数 35

我正在测试一个使用curl_exec php函数和CA证书的API,但是有些地方出错了,我有点不知所措。

我已经在我的apache VirtualHost上配置了SSL,看起来还可以(打开https:://[myVHost].工作)。

然而,API curl调用给我返回以下消息:

  • SSL peer certificate or SSH remote key was not OK

我对SSL不是很有经验,所以我对其原因知之甚少。

更新:

这是我在我的cURL请求中使用的代码,我注释了2行并更改了它们的值(看看'TODO‘行),这样它就可以工作了,但是这只是一个工作.

代码语言:javascript
复制
$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);
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-12-29 13:18:45

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

有两种解决办法:

  1. 设置有效的SSL证书。
  2. 禁用Curl中的SSL验证。(添加-不安全选项)

如果禁用验证,则无法确定是否真的与主机进行通信。所以这取决于你需要的安全级别。

票数 23
EN

Stack Overflow用户

发布于 2017-09-21 09:50:13

除了CURLOPT_SSL_VERIFYPEER之外,还有另外两个可能更改为false/0的设置

代码语言:javascript
复制
CURLOPT_SSL_VERIFYHOST
CURLOPT_SSL_VERIFYSTATUS

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

票数 6
EN

Stack Overflow用户

发布于 2017-03-08 13:45:19

虽然我是在回复一个旧帖子,但我认为它会对新观众有所帮助-

您可以通过添加

代码语言:javascript
复制
$opts[CURLOPT_VERBOSE] = 1

对于自签名证书,客户端可以使用IP地址与服务器连接,因为主机名在DNS缓存中不可用。在这种情况下,服务器证书的公共名称(CN)需要与server匹配(在生成服务器证书时将IP地址作为公共名称)。当您正确地执行此操作时,您可以看到以下消息:

通用名称: 192.168.0.1 (匹配)

这里的例子是192.168.0.1。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14192837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档