WWW :: Curl返回错误77,但命令行中的Curl成功

时间:2014-10-15 06:40:30

标签: perl ssl curl

我正在尝试使用Google的网址缩短服务。来自命令行的调用成功:

  

curl -v https://www.googleapis.com/urlshortener/v1/url -H   '内容类型:application / json' -d' {" longUrl":   " http://www.google.com"}'

但是,使用WWW :: Curl :: Easy的等效项返回错误代码77.我们已检查ca-bundle.crt文件是否符合this answer中建议的世界可读性。我真的很难过。任何有关尝试的建议都将受到赞赏。

Perl代码适用于我们的开发服务器,但在登台服务器上失败,因此代码是正确的。

2 个答案:

答案 0 :(得分:0)

错误是由于PKI目录中的SSL链证书文件损坏或丢失。 您需要确保文件ca-bundle,遵循以下步骤: 在您的控制台/终端中:

mkdir /usr/src/ca-certificates && cd /usr/src/ca-certificates

输入此网站:https://rpmfind.net/linux/rpm2html/search.php?query=ca-certificates,获取您的ca证书,以获取结果。 复制下载的网址并粘贴到网址:     wget your_url_donwload_ca-ceritificated.rpm 现在,安装你的rpm:

rpm2cpio your_url_donwload_ca-ceritificated.rpm | cpio -idmv

现在重新启动您的服务: 我的例子这个命令:

sudo service2 httpd restart
非常好 好看的

答案 1 :(得分:0)

在我的情况下“我试图在 cpp 中使用 curl 来执行 GET 请求”我尝试了以下解决方案:Curl in C++ - Can't get data from HTTPS 唯一对我有用的是使用以下方法禁用 SSL 验证对等方:

curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);