You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP Laravel 8 中如何通过Http Client传递.key和.pem格式客户端证书

Laravel Http 客户端配置客户端证书解决方案

你所使用的Http::post()是Laravel框架提供的HTTP客户端(底层基于GuzzleHttp),本身已原生支持客户端SSL证书配置,无需手动封装Curl,具体实现如下:

核心配置方法

和你现有Curl配置的参数一一对应:

  • withCert(证书路径, [证书密码]) 等价于Curl的CURLOPT_SSLCERT配置,用于传入公钥证书(.crt/.pem格式)
  • withSslKey(私钥路径, [私钥密码]) 等价于Curl的CURLOPT_SSLKEY配置,用于传入私钥文件(.key格式)

完整代码示例

// 替换为你实际的证书文件绝对路径
$crtPath = '/path/to/your/client.crt';
$pemPath = '/path/to/your/client.key';

$response = Http::withCert($crtPath)
    ->withSslKey($pemPath)
    ->post('https://domainname.com/api/client/session', [
        'xxx' => [
            'xx' => 'xxxx'
        ]
    ]);

// 业务逻辑处理,和你原有Curl逻辑对齐
if ($response->failed()) {
    return [
        "success" => false,
        "message" => $response->getErrorMessage()
    ];
}
return [
    "success" => true,
    "data" => $response->json()
];

注意事项

  • 请确保证书文件对PHP运行进程有可读权限,否则会触发SSL连接错误
  • 建议使用绝对路径传入证书地址,避免相对路径解析错误
  • 如果证书/私钥设置了访问密码,把密码作为第二个参数传入对应方法即可,例如withCert($crtPath, '你的证书密码')
  • 如果服务端使用自签SSL证书,可在请求前链式调用->withoutVerifying()跳过SSL校验,等价于Curl的CURLOPT_SSL_VERIFYPEER = false配置

内容的提问来源于stack exchange,提问作者Ali Wehbi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:15:02