curl从HTTP重定向到HTTPS后无法验证自签名证书求助
解决curl自签名证书及重定向失败问题
首先直接回答你的核心问题:CURLOPT_SSL_VERIFYPEER=false 对应的curl命令行参数是 -k(或者长选项 --insecure)。只需要在你的curl命令里加上这个参数,就能让curl跳过SSL证书的验证步骤,和代码中设置该选项的效果完全一致。
不过看了你提供的日志,我发现还有一个更关键的问题导致重定向失败:
你的HTTP服务运行在81端口,重定向后的URL是 https://192.168.144.1:81/zxc —— 但你的HTTPS服务应该是运行在默认的443端口(毕竟你直接访问 https://192.168.144.1/zxc -k 是正常的)。这就导致curl尝试在81端口(原本是HTTP端口)发起SSL握手,自然会卡住然后报错 SSL_ERROR_SYSCALL。
所以正确的解决步骤应该是:
- 修复lighttpd的重定向配置:把重定向的Location头修改为正确的HTTPS地址,去掉错误的81端口,比如设置为
https://192.168.144.1/zxc。这样重定向后curl会访问正确的HTTPS端口,配合-k参数就能正常运行。 - 带参数测试curl命令:如果暂时需要测试,使用以下命令即可:
(注:curl http://192.168.144.1:81/zxc -kvL -k-k只需要加一次即可,实际写curl ... -kvLk或者curl ... -kvL --insecure都可以)
最后补充:-k参数会关闭curl对SSL证书的校验,适合测试环境使用;生产环境建议配置可信的CA证书,或者把自签名证书加入系统信任列表,避免使用该参数带来的安全风险。
内容的提问来源于stack exchange,提问作者kyb
相关产品推荐
相关产品推荐

