Laravel Websockets - 错误:失败:连接建立错误:net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH

Posted

技术标签:

【中文标题】Laravel Websockets - 错误:失败:连接建立错误:net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH【英文标题】:Laravel Websockets - error:failed: Error in connection establishment:net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH 【发布时间】:2019-08-14 17:43:42 【问题描述】:

我在这个问题上浪费了几天时间,阅读了很多其他问题,但我不能简单地把它付诸实践,也不知道我的问题出在哪里,所以我希望有人能指出我的正确方向方向。所以下面是我用来尝试的代码!实现 websockets:(我也只是使用推送器驱动程序,而不是帐户!)

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'),
                'host' => '127.0.0.1',
                'port' => 6002,
                'scheme' => 'https',
            ],
        ],

websockets.php

'apps' => [
        [
            'id' => env('PUSHER_APP_ID'),
            'name' => env('APP_NAME'),
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'capacity' => null,
            'enable_client_messages' => false,
            'enable_statistics' => false,
        ],
    ],
...

'ssl' => [

        'local_cert' => 'certs/myDomain.cert',
         // i have created a certs 
         //folder in my public_html and downloaded the cert from my 
         //remote server

        'local_pk' => 'certs/myDomain.key', 
         // i have created a certs 
         //folder in my public_html and downloaded the key from my 
         //remote server

        'passphrase' => null // i don´t know the pass
    ],

bootstrap.js

import Echo from 'laravel-echo'
window.Pusher = require('pusher-js');
window.Echo = new Echo(
    broadcaster: 'pusher',
    key: 'myKey',
    wsHost: window.location.hostname,
    wssPort: 6002,
    disableStats: true,
    encrypted: true,
    enabledTransports: ['ws', 'wss']
);
如果我去终端和 php artisan websockets:serve --port=6002 服务器启动并没有报错

我的网站是 HTTPS,我不知道如何实现反向代理 就像文档说的那样,因为我使用的是 apache 而不是 nginx,而我的 面板编辑文件一团糟……使用 ssl 应该可以正常工作吗?

为什么会说ERR_SSL_VERSION_OR_CIPHER_MISMATCH我不知道该怎么办了

感谢您的宝贵时间,问候。

【问题讨论】:

【参考方案1】:

所以我最终使用了文档讨论的反向代理解决方案,我没有找到使用 ssl 的解决方案,但我很确定它与我的证书和我的提供程序有关.. .事实证明,反向代理解决方案要简单得多,所以对于那些在同一个问题上苦苦挣扎的人,我建议这样做:

转到您的远程服务器面板(我有 CWP7)并打开您的 yourDomain.conf 并在里面放置:

   ProxyPass/app/yourLaravelApp ws://yourDomain.com:theWebsocketPort/app/ginkgo 
   ProxyPass/app/yourLaravelApp ws://yourDomain.com:theWebsocketPort/app/ginkgo 

你必须编辑的那个文件当然与你的网络服务器配置有关,在我的例子中,我有 myDomanin.ssl.conf 和 myDomain.conf,如果你有相同的,你 必须把代码放在上面在两个文件中,就是这样!,享受吧。

【讨论】:

以上是关于Laravel Websockets - 错误:失败:连接建立错误:net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Websockets - 错误:失败:连接建立错误:net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH

如何在共享主机上部署 laravel websockets?

带有独立服务器的 Laravel Websockets

laravel中的双向WebSockets?

Laravel websockets + Laravel Echo 不听我的事件

无法访问 xampp-vm 上的 laravel-websockets 仪表板