来自https://curl.haxx.se/docs/httpscripting.html
在 HTTPS 世界中,您可以使用证书来验证您是否是您所声称的身份,作为普通密码的补充。Curl 支持客户端证书。所有证书都使用密码短语进行锁定,您需要先输入该密码,然后curl 才能使用该证书。密码短语可以在命令行上指定,如果没有指定,则在curl 查询时以交互方式输入。在 HTTPS 服务器上使用带有 curl 的证书,例如:
Run Code Online (Sandbox Code Playgroud)curl --cert mycert.pem https://secure.example.com
curl 还尝试通过根据本地存储的 CA 证书包验证服务器的证书来验证服务器是否是其声称的服务器。验证失败将导致curl拒绝连接。然后,如果您想告诉curl 忽略无法验证服务器,则必须使用--insecure (-k)。有关服务器证书验证和 ca 证书捆绑包的更多信息,请参阅 SSLCERTS 文档,可在线获取: https: //curl.haxx.se/docs/sslcerts.html
有时您可能最终会得到自己的 CA 证书存储,然后您可以告诉curl 使用它来验证服务器的证书:
Run Code Online (Sandbox Code Playgroud)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 层不可见。
告诉curl
使用--cacert
并--cert
会告诉程序将客户端证书发送到服务器,该证书在 TLS 层处理,并且对 HTTP 层不可见。Web 服务器可以将客户端的 CN 暴露给 CGI 程序,或者将其暴露给身份验证模块,但这都是在 HTTP 请求之外完成的。