【问题标题】:PHP Error:Unknown SSL protocol error in connection to api.smartsheet.com:443PHP 错误:连接到 api.smartsheet.com:443 的未知 SSL 协议错误
【发布时间】:2017-12-14 19:02:47
【问题描述】:

我正在尝试使用 PHP/cURL 连接到智能表格 API。

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://api.smartsheet.com/2.0/sheets/xxxxxxxxx/rows");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);

curl_setopt($ch, CURLOPT_POSTFIELDS, 
        "[{\"toTop\":true, \"cells\": [ "
        . "{\"columnId\": xxxxxxxx, \"value\": description},"
        . "{\"columnId\": xxxxxxxx, \"value\": amount},"
        . "{\"columnId\": xxxxxxxx, \"value\": po},"
        . "{\"columnId\": xxxxxxxx, \"value\": wo},"
        . "{\"columnId\": xxxxxxxx, \"value\": contractor},"
        . "{\"columnId\": xxxxxxxx, \"value\": vendorcode},"
        . "{\"columnID\": xxxxxxxx, \"value\": notes}]");

curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = "Authorization: Bearer xxxxxxxx";
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

?>

由于某种原因,每次运行时都会出现以下错误:

连接到 api.smartsheet.com:443 的未知 SSL 协议错误

我试图改变 SSL_Version 但这也不能解决问题。我知道我所有的数字(token、sheetnum、column num)都是正确的。我尝试过使用其他 api 的人的其他解决方案,但仍然找不到答案。有人对如何解决这个问题有任何想法吗?

谢谢你, 约书亚

【问题讨论】:

  • 您检查过以下内容吗? blog.techstacks.com/2010/03/…
  • 我刚刚经历了它,但我似乎仍然无法找到问题所在。这是我第一次使用 cURL,所以有些协议对我来说是陌生的。不过还是谢谢

标签: php ssl curl smartsheet-api


【解决方案1】:

curl_setopt($ch, CURLOPT_SSLVERSION, 3);

这会强制实施 SSLv3,该协议出于安全原因已经过时了一段时间。而且,looking at the configuration of the server 它不支持 SSLv3,这与大多数其他服务器类似。

我建议简单地删除这一行,让 curl 自己选择最好的版本。

我已尝试更改 SSL_Version,但这也不能解决问题。

它可能无法解决问题,因为您没有从服务器获得预期的响应。它可能会消除您面临的特定 SSL 问题,以便您继续处理您的代码可能遇到的其他问题。仔细查看任何可能更改的错误消息。

【讨论】:

  • 首先,感谢您的回复。其次,我尝试将其拔出,但问题仍然存在。因此,我试图强制 curl 使用您提供的链接中指出的 TLSv1.2。关于如何解决它的任何其他想法?它不会以错误号响应,只是错误
  • @JoshuaAverbuch:你每次都得到完全相同的Unknown SSL protocol error错误吗?您能否提供您的环境配置,即 curl 版本和 openssl 版本(如果 curl 与 openssl 绑定一起使用)。请参阅secure.php.net/manual/en/function.curl-version.php 了解如何获取这些信息。
  • version_number 462597 version 2 ssl_version_number 1597 ssl_version 0 libz_version 7.15.5 host i386-redhat-linux-gnu age OpenSSL/0.9.8b features 1.2.3 protocols Array
  • @JoshuaAverbuch:OpenSSL/0.9.8b - 这是一个可怕的旧版本(11 年)并且多年来不受支持的 OpenSSL 版本。它不支持 TLS 1.2,这意味着您无法强制执行它。它有很多错误。类似地,您的 curl 版本已有 10 多年的历史,同时修复了许多错误。我的猜测是,如果您使用最新的系统,您的问题就会消失。
  • 我会调查的。非常感谢
猜你喜欢
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 2014-11-29
相关资源
最近更新 更多