Laravel调用Google reCAPTCHA v2接口报cURL error 60 SSL证书错误如何解决
解决Laravel请求Google reCAPTCHA接口cURL 60 SSL证书错误方案
该报错本质为cURL无法验证目标站点的SSL证书根颁发机构,本地环境缺少官方可信CA证书包,以下为对应解决方案:
方案1:全局配置PHP可信CA证书(推荐,开发/生产环境均可用)
- 搜索下载官方最新的
cacert.pemCA证书包,存放到本地非中文路径下 - 找到当前运行的PHP配置文件
php.ini,可通过phpinfo()查看Loaded Configuration File项确认加载的配置文件路径,避免修改错无效配置 - 搜索
curl.cainfo和openssl.cafile两个配置项,取消注释后填写cacert.pem的绝对路径:
curl.cainfo = "D:\your-custom-path\cacert.pem" openssl.cafile = "D:\your-custom-path\cacert.pem"
- 重启PHP服务后重新发起请求即可生效
方案2:Laravel HTTP客户端单独配置(无需修改PHP全局配置)
如果不想调整全局PHP配置,可在请求时单独指定CA证书路径,代码修改如下:
use Illuminate\Support\Facades\Http; $response = Http::asForm() ->withOptions([ 'verify' => 'D:\your-custom-path\cacert.pem' ]) ->post('https://www.google.com/recaptcha/api/siteverify', [ 'secret' => '6LftPCIdAAAAAPD5Md-fahgg3sj0SCUhV9qC5e9B', 'response' => request('Response') ])->json(); return $response;
方案3:本地开发临时跳过SSL验证(禁止在生产环境使用)
仅本地调试时可临时关闭SSL验证快速验证业务逻辑,代码修改如下:
use Illuminate\Support\Facades\Http; $response = Http::asForm() ->withoutVerifying() ->post('https://www.google.com/recaptcha/api/siteverify', [ 'secret' => '6LftPCIdAAAAAPD5Md-fahgg3sj0SCUhV9qC5e9B', 'response' => request('Response') ])->json(); return $response;
内容的提问来源于stack exchange,提问作者Dusan
相关产品推荐
相关产品推荐

