如何使用curl忽略无效和自签名的SSL连接错误

时间:2020-01-09 14:17:02  来源:igfitidea点击:

使用curl命令时如何忽略SSL认证警告?
在Linux或类似Unix的系统上执行curl命令是否具有wget命令之类的--no-check-certificate选项?

说明:
您需要将-k或--insecure选项传递给curl命令。
该选项明确允许curl执行不安全的SSL连接和传输。
试图通过使用默认安装的CA证书捆绑包来确保所有SSL连接的安全。

curl是否在Linux上具有wget命令之类的no-check-certificate选项?

语法如下,允许curl命令在不使用https证书的情况下使用不安全或无效的SSL证书:

curl -k url
curl --insecure url
curl --insecure [options] url
curl --insecure -I url

cURL忽略SSL证书警告命令

在此示例中,禁用curl命令的证书验证:

curl --insecure -I https://192.54.1.2/

或者

curl -k -O https://192.54.1.2/file.tar.gz

没有-k--insecure选项,您将收到一条错误消息,内容如下:

curl: (60) SSL certificate problem: Invalid certificate chain
More details here: https://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.

这是一个有用的示例,您想在不使用启用SSL的SNI域名的情况下从远程主机获取文件或查看标头信息:

curl -O --insecure --header 'Host: www.example.com' -I https://207.5.1.10/file.html
### OR ###
curl -k --header 'Host: www.example.com' -I https://207.5.1.10/file.html

如何将更改应用于所有HTTPS连接

您可以在$HOME/.curlrc文件中添加insecure选项:

$ vi $HOME/.curlrc

追加以下内容:

insecure

保存并关闭文件。
但是,出于安全原因,我不建议默认情况下禁用所有连接的SSL检查。

如何为信任的CA捆绑包指定CA以在cli上卷曲

对于自签名的SSL/TLS证书,可以尝试使用以下命令:

curl --cacert /pth/to/my/ca.pem https://url
curl --header 'Host: www.theitroad.local' --cacert /pth/to/my/ca.pem https://207.5.1.10/theitroad.tar.gz