Laravel使用GoCardless客户端调用API报cURL 60 SSL证书过期错误如何解决?
问题解决方法
该错误本质是本地PHP/cURL使用的CA根证书包过旧、或是OpenSSL版本过低,无法正确验证GoCardless API站点的SSL证书导致的,和你本地站点的自签名SSL证书无关联。可按以下优先级选择解决方案:
方案1:更新本地CA根证书(推荐,无安全风险)
- 搜索下载最新的cURL官方CA证书包
cacert.pem文件 - 打开Laragon对应PHP版本的目录,进入
/extras/ssl路径,替换掉目录内旧的cacert.pem文件 - 打开Laragon菜单,依次选择
PHP > php.ini打开配置文件,搜索找到curl.cainfo和openssl.cafile两个配置项,取消注释后填写为新cacert.pem的绝对路径,示例:
curl.cainfo = "C:\laragon\bin\php\php-8.2.1-Win32-vs16-x64\extras\ssl\cacert.pem" openssl.cafile = "C:\laragon\bin\php\php-8.2.1-Win32-vs16-x64\extras\ssl\cacert.pem"
- 保存配置后重启Laragon,重试API请求即可
方案2:升级Laragon版本
如果你使用的是较老版本的Laragon,内置的OpenSSL版本低于1.1.0会存在证书校验逻辑缺陷,直接下载安装最新版Laragon,新版已内置高版本OpenSSL和最新根证书,安装完成后重启服务即可解决问题。
方案3:临时关闭SSL校验(仅允许本地开发使用)
如果只是临时调试,可在实例化GoCardless客户端时传入配置,跳过SSL证书校验,代码如下:
$client = new Client([ 'access_token' => config('gocardless.token'), 'environment' => config('gocardless.environment'), 'curl_options' => [ CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false ] ]);
注意:该配置会导致请求传输过程存在被窃听篡改的风险,严格禁止在生产环境使用
内容的提问来源于stack exchange,提问作者Jesse Luke Orange
相关产品推荐
相关产品推荐

