5月29日 22:48

cURL 如何处理 HTTPS 和 SSL/TLS 证书验证?

默认 cURL 验证 SSL 证书(CA 证书+域名匹配+有效期),验证失败报 SSL certificate problem。跳过验证:-k 或 --insecure(仅测试用,生产禁用)。指定 CA 证书:--cacert /path/to/ca.pem。客户端证书(mTLS):--cert client.pem --key client.key。指定 TLS 版本:--tlsv1.2 或 --tlsv1.3。查看证书信息:curl -vI URL 2>&1 | grep SSL。

追问

为什么 -k 不安全?

-k 跳过证书验证 = 不验证服务器身份,中间人可以伪造任何 HTTPS 站点。你在 -k 模式下输入的密码/Token 全部暴露。仅用于测试环境和自签名证书。

自签名证书怎么正确处理?

把自签名 CA 导入系统信任库,或用 --cacert 指定自签名 CA 文件。这样 cURL 正常验证而不需要 -k。

mTLS 是什么场景?

双向 TLS:服务器验证客户端证书+客户端验证服务器证书。企业 API 网关、K8s apiserver、零信任网络常用。

如何查看证书链和过期时间?

curl -vI URL 2>&1 | grep -E "subject:|expire:|issuer:"。或用 openssl s_client。

TLS 1.2 和 1.3 有什么区别?

1.3 握手从 2-RTT 降到 1-RTT,移除了不安全的密码套件,强制前向保密。cURL 7.54+ 支持 TLS 1.3。

标签:cURL