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

如何配置Laravel Websockets启用SSL?解决证书颁发者未识别错误

Laravel Websockets SSL配置:解决“对等方证书颁发者未被识别”错误

我已为Laravel Websockets配置SSL,但出现**“Peer's certificate issuer not recognized”(对等方证书颁发者未被识别)**错误,以下是我的配置文件,恳请帮忙排查:

broadcasting.php 配置

'pusher' => [
    'driver' => 'pusher',
    'key' => env('PUSHER_APP_KEY'),
    'secret' => env('PUSHER_APP_SECRET'),
    'app_id' => env('PUSHER_APP_ID'),
    'options' => [
        'cluster' => env('PUSHER_APP_CLUSTER', 'mt1'),
        'encrypted' => true,
        'host' => env('PUSHER_HOST', '127.0.0.1'),
        'port' => env('PUSHER_PORT', 6001),
        'scheme' => env('PUSHER_SCHEME', 'https'),
        'useTLS' => true,
        'curl_options' => [
            CURLOPT_SSL_VERIFYHOST => 0,
            CURLOPT_SSL_VERIFYPEER => 0,
        ]
    ],
    'client_options' => [
        // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
    ],
],

websockets.php 配置

'ssl' => [
    /*
     * 文件系统中本地证书文件的路径。必须是PEM编码文件,
     * 包含证书和私钥。可选择性包含颁发者证书链。私钥也可
     * 存储在local_pk指定的单独文件中。
     */
    'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null),

    /*
     * 当证书(local_cert)和私钥分离时,文件系统中本地私钥文件的路径。
     */
    'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null),

    /*
     * local_cert文件的密码。
     */
    'passphrase' => env('LARAVEL_WEBSOCKETS_SSL_PASSPHRASE', null),
    'verify_peer' => false,
    'verify_peer_name' => false,
],

排查步骤:

  • 检查证书链完整性
    确认local_cert指向的PEM文件包含完整证书链:服务器证书 + 中间证书 + 根证书。仅提供服务器证书会导致系统无法识别颁发者,需将所有证书按顺序合并到同一个PEM文件中。

  • 验证证书有效性与域名匹配
    使用openssl x509 -in /path/to/your/cert.pem -text -noout命令查看证书详情:

    • 检查Issuer字段是否为受信任的CA机构(自签名证书需手动信任);
    • 确认证书未过期;
    • 确保证书的Common Name(CN)或Subject Alternative Name(SAN)与访问Websocket服务的域名完全一致。
  • 调整客户端Guzzle配置
    在broadcasting.php的client_options中添加SSL验证选项(测试环境可临时关闭,生产环境禁用):

    'client_options' => [
        'verify' => false,
    ],
    

    生产环境需配置verify为CA证书路径,确保客户端信任服务端证书。

  • 重启Websocket服务
    修改配置后必须重启Laravel Websockets服务,确保新配置生效。

  • 检查文件权限
    确认Websocket进程拥有读取local_cert和local_pk文件的权限,避免因权限不足导致证书加载失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:45:02