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。