来自https://curl.haxx.se/docs/httpscripting.html
在 HTTPS 世界中,您使用证书来验证您是您声称的那个人,作为普通密码的补充。Curl 支持客户端证书。所有证书都使用密码锁定,您需要输入密码才能让 curl 使用证书。密码短语可以在命令行中指定,如果没有,则在 curl 查询时以交互方式输入。在 HTTPS 服务器上使用带有 curl 的证书,例如:
curl --cert mycert.pem https://secure.example.com
curl 还尝试通过根据本地存储的 CA 证书包验证服务器的证书来验证服务器是否是它声称的身份。验证失败将导致 curl 拒绝连接。然后,您必须使用 --insecure (-k),以防您想告诉 curl 忽略无法验证服务器。有关服务器证书验证和 ca 证书捆绑的更多信息,请参阅 SSLCERTS 文档,可在此处在线获取: https ://curl.haxx.se/docs/sslcerts.html
有时您可能会得到自己的 CA 证书存储,然后您可以告诉 curl 使用它来验证服务器的证书:
curl --cacert ca-bundle.pem https://example.com/
HTTP 请求和响应标头做什么curl --cert
以及curl --cacert
读写?
谢谢。
请注意,TLS独立于 HTTP。其他协议可以通过 TLS 传递(例如 LDAP、SMTP、NNTP,...)。基本上,TLS 对数据通道进行“低级加密”,然后你可以通过它传递任何东西。
使用 HTTPS,HTTP 流量分层在 TLS 之上。与 HTTP 相比,在 TLS 层(TLS 版本;密码协商;证书验证;SNI)发生的事情是“低级”的,对 HTTP 层不可见。
Telling
curl
to use--cacert
and--cert
will 告诉程序向服务器发送客户端证书,该证书在 TLS 层进行处理,对 HTTP 层不可见。Web 服务器可能会将客户端的 CN 暴露给 CGI 程序,或者将其暴露给身份验证模块,但这一切都是在 HTTP 请求之外完成的。