【问题标题】:How do i get cURL to use https我如何让 cURL 使用 https
【发布时间】:2015-05-01 04:44:03
【问题描述】:

我使用的是 Ubuntu 14.04.2 LTS。 cURL 已安装,但不包含 HTTPS 作为它将使用的协议。

例如:

curl https://npmjs.org/install.sh | sh

给我这个:

curl: (1) Protocol https not supported or disabled in libcurl

检查 curl -V 结果:

Protocols: dict file ftp gopher http imap pop3 rtsp smtp telnet tftp
Features: IPv6 Largefile

该列表中缺少 HTTPS...那么,如何安装支持 HTTPS 的 cURL?

哦,sudo apt-get install curl 是我最初安装它时所做的。

【问题讨论】:

  • 为什么这是一个糟糕的问题/被否决了?

标签: linux ubuntu curl https


【解决方案1】:

我仍然不知道为什么使用 Aptitude 会安装一个不支持 HTTPS 的版本,但从头开始构建就可以了:

git clone https://github.com/bagder/curl.git
sudo apt-get build-dep curl
cd curl
./buildconf
./configure
make
sudo make install 

现在curl -V 产生

Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets

哦,我首先需要这个的原因是因为 NVM 在尝试下载 Node 版本或使用 nvm ls-remote 获取可用版本列表时给了我 N/A。这是由于 cURL 不适用于 HTTPS 请求。

【讨论】:

  • 这不起作用。我得到:远程:找不到存储库。致命:未找到存储库“github.com/badger/curl.git
  • @rf_wilson 这已经有几年了,但请注意,用户是 'bagder',而不是 'badger'。
  • sudo apt-get build-dep curl 报告“无法找到 curl 的源包” - 为什么还需要这样做?
  • 请注意,您的 libcurl 版本可能比 curl 版本旧。在这种情况下,使用apt list --installed libcurl\* 确定它,然后在构建之前检查相应的curl-X_Y_Z 标签。
【解决方案2】:

您的 curl 版本未使用 SSL 支持进行编译。它实际上是在配置阶段传递的一个标志:

./configure --with-ssl

最快最完整的方法是下载带有--with-ssl 标志的curl sourcescompile it yourself。这也将确保您的 curl 和 SSL 库也不会受到任何令人讨厌的已知漏洞的攻击。使用不安全的 SSL 版本有一些变通方法,但当然不建议这样做。

【讨论】:

  • 谢谢!而已。你知道为什么 Aptitude 不给我 HTTPS 的版本吗?
  • 我认为是为了引起人们对最近席卷互联网的安全漏洞的关注(比如 Heartbleed)。 SSLv2 有相当多的安全问题。这里还有一些问题:superuser.com/questions/246074/…。通过禁用它,它会强制用户使用更新的库编译新的,以便其中一些问题消失。
  • 事实上 curl 有一个 --insecure 标志,你可以在运行它时传递​​它,这将强制它使用 SSLv2,即使它认为 v2 不安全(有充分的理由)。您不必为最新版本传递 ssl 配置标志,因为它可能在您的系统上找到了 SSLv3 支持并在该版本的 SSL 支持中编译。所以禁用它并不合适——这是 curl 包维护者的选择。
猜你喜欢
  • 2010-12-30
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 2018-06-26
  • 2020-04-21
相关资源
最近更新 更多