curl - 使用 --insecure 选项时数据是不是加密?

Posted

技术标签:

【中文标题】curl - 使用 --insecure 选项时数据是不是加密?【英文标题】:curl - Is data encrypted when using the --insecure option?curl - 使用 --insecure 选项时数据是否加密? 【发布时间】:2012-01-21 03:39:18 【问题描述】:

我有一种情况,客户端通过 curl 调用 https url。 https url 的 SSL 证书是自签名的,因此 curl 无法进行证书验证并失败。 curl 提供了一个选项 -k/--insecure 来禁用证书验证。

我的问题是,在使用--insecure 选项时,客户端和服务器之间完成的数据传输是否加密(对于 https url 应该是加密的)?我了解由于未完成证书验证而带来的安全风险,但对于这个问题,我只关心数据传输是否加密。

【问题讨论】:

非常糟糕的策略;见The most dangerous code in the world: validating SSL certificates in non-browser software。 @jww,如果您处于无法控制正在使用的证书(在这种情况下为自签名)但仍需要使用 curl 进行测试的情况下,这不一定是坏事。我同意在不安装 CA 链的情况下使用自签名证书(如在企业环境中)是一个坏主意,但在大型组织中,它通常不受编写代码或使用 API 的人的控制。跨度> 【参考方案1】:

是的,传输的数据仍以加密方式发送。 -k/--insecure 将“仅制作”curl 跳过证书验证,它不会一起关闭 SSL。

有关此事的更多信息,请访问以下链接:

curl.haxx.se - Details on Server SSL Certificates

【讨论】:

【参考方案2】:

它将被加密但不安全。如果您信任该证书,则应将该证书添加到您的证书存储区,而不是不安全地连接。

macOS: sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/new-root-certificate.crt

Ubuntu、Debian: sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt sudo update-ca-certificates

CentOS 6: yum 安装 ca 证书 update-ca-trust 强制启用 cp foo.crt /etc/pki/ca-trust/source/anchors/ update-ca-trust 提取物

CentOs 5: cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

窗户: certutil -addstore -f "ROOT" new-root-certificate.crt

【讨论】:

以上是关于curl - 使用 --insecure 选项时数据是不是加密?的主要内容,如果未能解决你的问题,请参考以下文章

添加 --insecure-registry 选项后 Docker 守护程序未启动

配置 jMeter Http Request 以模拟此 curl 命令

如何通过 CURL 向所有设备发送 Firebase 通知?

为啥 curl 无法使用选项 -i 显示 http 标头

cURL - 在详细模式下,它不显示我发布的文件的内容

php curl选项列表(超详细)