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

Laravel beyondcode/laravel-websockets开启verify_peer后wss连接失败咨询

解决方案

问题根因

开启verify_peer => true后SSL握手失败,核心是PHP的WebSocket服务SSL上下文未正确配置根CA证书用于证书合法性校验,或使用的站点证书缺少完整信任链。

分步修复步骤

  • 第一步:补全config/websockets.php的SSL配置
    开启verify_peer时需额外指定系统根CA证书路径,修改后的ssl配置段如下:
'ssl' => [
    'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null),
    'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null),
    'passphrase' => env('LARAVEL_WEBSOCKETS_SSL_PASSPHRASE', null),

    'verify_peer' => true,
    'allow_self_signed' => false,
    // 按服务器操作系统填对应根CA证书路径
    // CentOS/RHEL/cPanel默认环境用这个
    'cafile' => '/etc/pki/tls/certs/ca-bundle.crt',
    // Debian/Ubuntu环境用下面这个
    // 'cafile' => '/etc/ssl/certs/ca-certificates.crt',
],
  • 第二步:替换为完整证书链文件
    不要使用cPanel生成的单独域名证书文件,将LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT对应环境变量的值改为AutoSSL生成的fullchain.pem路径,该文件已经包含域名证书、中间证书和根证书的完整信任链,避免浏览器校验时证书链断裂。
  • 第三步:校验文件读取权限
    确保运行Laravel WebSockets服务的系统用户,对local_cert、local_pk、cafile三个文件均有可读权限,可通过chmod 644 对应文件路径调整权限,私钥文件权限最高不要超过644,避免安全风险。
  • 第四步:重启服务生效
    修改完配置后停止原有WebSockets服务,重新启动确保配置加载:
php artisan websockets:stop
php artisan websockets:serve
# 生产环境用守护进程的话重启对应守护进程即可

校验方法

可以通过openssl命令验证6001端口的SSL配置是否正常:

openssl s_client -connect aceraven777.com:6001

如果返回结果中包含Verify return code: 0 (ok),说明SSL校验配置已生效,此时浏览器即可正常连接wss服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 06:06:04