从https://curl.haxx.se/docs/httpscripting.html
在 HTTPS 世界中,您可以使用证书来验证您是否是您所声称的身份,作为普通密码的补充。 Curl 支持客户端证书。所有证书都使用密码短语进行锁定,您需要先输入该密码,然后curl 才能使用该证书。密码短语可以在命令行上指定,如果没有指定,则在curl 查询时以交互方式输入。在 HTTPS 服务器上使用带有 curl 的证书,例如:
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 使用它来验证服务器的证书:
curl --cacert ca-bundle.pem https://example.com/
HTTP 请求和响应标头的作用curl --cert
和curl --cacert
读写是什么?
谢谢。
答案1
请注意,TLS 是独立的HTTP 的。其他协议可以通过 TLS 传递(例如 LDAP、SMTP、NNTP...)。基本上,TLS 对数据通道进行“低级加密”,然后您可以通过它传递任何内容。
对于 HTTPS,HTTP 流量位于 TLS 之上。与 HTTP 相比,TLS 层发生的事情(TLS 版本;密码协商;证书验证;SNI)是“低级”的,并且无形的到HTTP层。
告诉curl
使用--cacert
并--cert
会告诉程序发送一个客户端证书到服务器,在 TLS 层处理,对 HTTP 层不可见。网络服务器可能将客户端的 CN 暴露给 CGI 程序,或者将其暴露给身份验证模块,但这都是在 HTTP 请求之外完成的。