PHP cURL连接重置解决方案:正确绕过SSL验证

山间有风
山间有风
发布时间:2026-10-14 | 2人浏览过
原创

在使用 PHP cURL 发起 HTTPS 请求时,经常会遇到 CURL ERROR: Recv failure: Connection reset by peer 的报错。这通常是因为 cURL 默认严格验证 SSL/TLS 证书,而目标站点的证书环境导致握手失败。解决方法是显式关闭服务端证书验证与主机名检查。

错误原因分析

cURL 在默认情况下为了确保安全性,会对 HTTPS 站点的 SSL 证书进行严格校验。如果目标服务器的证书自签名、过期或证书链不完整,cURL 在握手阶段就会拒绝连接并抛出异常,表现为底层连接被对端重置(Connection reset)。

解决步骤

第1步:定位cURL初始化代码

打开项目中调用 curl_exec() 前的相关 PHP 文件,找到 curl_init() 返回的句柄变量,例如 $c 或 $ch。

第2步:添加SSL跳过参数

在执行请求前,使用 curl_setopt() 函数添加以下两个关键配置,以绕过证书信任检查:

// 禁用服务器端 SSL 证书验证
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
// 禁用对主机名的 SSL 验证
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false);
  1. 目的:解除因证书问题导致的握手阻断。
  2. 入口:cURL 选项设置方法。
  3. 操作:将上述两行代码插入到 curl 执行之前。
  4. 结果:再次请求该 HTTPS 地址,应能正常获取内容且不再报连接重置错误。

风险提示与安全建议

虽然上述方法能瞬间解决问题,但在生产环境中直接关闭 SSL 验证会降低中间人攻击的风险防御能力。建议在测试环境使用该方案,或在正式环境中配置正确的 CA 证书路径。如果必须用于生产环境,请确保通信链路本身(如内网、受信任域名)的安全性,或更新服务器根证书库。

总结

通过以上两个参数的配置,可以有效解决 PHP cURL 在访问部分 HTTPS 站点时出现的 “Connection reset by peer” 错误。以上就是关于解决 PHP cURL 报错 CURL ERROR Recv failure Connection reset by peer 的详细内容,更多关于 PHP cURL SSL 配置的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表