`curl --cert` 和 `curl --cacert` 读取和写入哪些 HTTP 请求和响应标头?

`curl --cert` 和 `curl --cacert` 读取和写入哪些 HTTP 请求和响应标头?

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 --certcurl --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 请求之外完成的。

相关内容