Laravel Beyondcode websockets - 如果 verify_peer 为 true 则不起作用

ace*_*777 6 php websocket laravel

我正在使用该包beyondcode/laravel-websockets

\n

我的问题是,当我设置'verify_peer' => truewebsocket 时,它不起作用,但当该值是时,false它就起作用了。这里有人设法让它发挥作用吗?

\n

对于生产网站,我想设置verify_peertrue防止中间人攻击。

\n

我有一个网站,可以说aceraven777.com,它已经SSL安装了(在cPanel它已autoSSL启用的情况下)。

\n

cPanel在 websockets 配置中,我为证书和私钥输入了相同的路径(生成的路径)。

\n

chrome 抛出错误:

\n
WebSocket connection to 'wss://aceraven777.com:6001/app/asdfswerqwsafasfd?protocol=7&client=js&version=4.3.1&flash=false' failed: \ncreateWebSocket @ pusher.min.js:8\n
Run Code Online (Sandbox Code Playgroud)\n

这是 Firefox 中的错误:

\n
Firefox can\xe2\x80\x99t establish a connection to the server at wss://aceraven777.com:6001/app/asdfswerqwsafasfd?protocol=7&client=js&version=4.3.1&flash=false. pusher.min.js:8:6335\n
Run Code Online (Sandbox Code Playgroud)\n

以下是我使用的设置:

\n

配置/websockets.php

\n
'ssl' => [\n    /*\n        * Path to local certificate file on filesystem. It must be a PEM encoded file which\n        * contains your certificate and private key. It can optionally contain the\n        * certificate chain of issuers. The private key also may be contained\n        * in a separate file specified by local_pk.\n        */\n    'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null),\n\n    /*\n        * Path to local private key file on filesystem in case of separate files for\n        * certificate (local_cert) and private key.\n        */\n    'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null),\n\n    /*\n        * Passphrase for your local_cert file.\n        */\n    'passphrase' => env('LARAVEL_WEBSOCKETS_SSL_PASSPHRASE', null),\n\n    'verify_peer' => true,\n],\n
Run Code Online (Sandbox Code Playgroud)\n

配置/广播.php

\n
'pusher' => [\n    'driver' => 'pusher',\n    'key' => env('PUSHER_APP_KEY'),\n    'secret' => env('PUSHER_APP_SECRET'),\n    'app_id' => env('PUSHER_APP_ID'),\n    'options' => [\n        'cluster' => env('PUSHER_APP_CLUSTER'),\n        'host' => env('PUSHER_APP_HOST'),\n        'port' => env('PUSHER_APP_PORT'),\n        \n        'useTLS' => true,\n        'scheme' => 'https',\n        \n        'curl_options' => [\n            CURLOPT_SSL_VERIFYHOST => 1,\n            CURLOPT_SSL_VERIFYPEER => 1,\n        ],\n    ],\n\n    // Configuration for laravel mix JS\n    'mix' => [\n        'host' => env('MIX_PUSHER_APP_HOST'),\n        'key' => env('MIX_PUSHER_APP_KEY'),\n        'cluster' => env('MIX_PUSHER_APP_CLUSTER'),\n        'port' => env('MIX_PUSHER_APP_PORT'),\n    ],\n],\n
Run Code Online (Sandbox Code Playgroud)\n

小智 -1

这篇文章前一段时间帮助我实现了 websockets,特别是使用 SSL 证书: https: //christoph-rumpel.com/2020/11/laravel-real-time-notifications

您还有 git 存储库告诉您如何使用和不使用 SSL 来实现。