Используйте Stunnel для подключения wss к wsServer

Я пытаюсь использовать stunnel, чтобы превратить соединение wss в соединение ws, потому что вссервер не поддерживает wss. На сервере работает Ubuntu, а клиент, который я использую, — это Chrome, если это имеет значение.

Это мой stunnel.conf файл

foreground = yes
debug = info
output = /var/log/stunnel.log

[wsServer]
cert = /etc/letsencrypt/live/myurl.com/fullchain.pem
key = /etc/letsencrypt/live/myurl.com/privkey.pem
accept = 0.0.0.0:8443
connect = 127.0.0.1:8080

Я пытаюсь подключиться к нему с помощью вызова javascript:

const socket = new WebSocket('wss://myurl.com:8433');

Но я постоянно получаю ошибку подключения:

(index):13 WebSocket connection to 'wss://myurl.com:8433/' failed: (anonymous) @ (index):13

Вот что я проверил:

  • Что моя переадресация портов/системные брандмауэры не используют соединение. Если я отключу stunnel и настрою обычный сокет, прослушивающий порт 8080 или 8433, я смогу подключиться к этому сокету с клиентской машины.
  • wsServer принимает незашифрованный трафик, если я вместо этого подключаюсь к ws://myurl.com:8080, он работает нормально
  • wsServer отлично принимает соединения с локального хоста, что, как я понимаю, необходимо, когда stunnel работает на той же машине, что и сервер.
  • Chrome принимает мой сертификат при использовании для страниц https в том же домене, поэтому я не думаю, что у меня есть ошибка подписи сертификата, но я не знаю, как определить, связан ли сертификат с ошибкой подключения.
  • Stunnel не выводит никаких ошибок при запуске
  • Ничего не печатается в /var/log/stunnel.log, хотя файл был создан после того, как я добавил поле вывода в файл .conf

Любые идеи о том, что еще я могу попробовать? Есть ли причина, по которой сертификат, который работает для https, не будет работать с wss?

Люди рекомендуют использовать ProxyPass через apache и вообще избегать stunnel?

Как включить TLS в gRPC-клиенте и сервере : 2
Как включить TLS в gRPC-клиенте и сервере : 2
Здравствуйте! 🙏🏻 Надеюсь, у вас все хорошо и добро пожаловать в мой блог.
Обновление драйверов Microsoft ODBC (с 17 до 18) для PHP
Обновление драйверов Microsoft ODBC (с 17 до 18) для PHP
Все знают, что PHP v7.4 потерял поддержку, и наши недавние старые приложения должны обновиться до PHP v8.x. ...
0
0
10
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не решение, а следующий шаг по устранению неполадок. Получите себе openssl и попытайтесь подключиться к 8443. Это должно вернуть информацию о сертификате и, по крайней мере, подтвердить, что stunnel представляет сертификат.

openssl s_client -connect myurl.com:8443

Прошло некоторое время с тех пор, как я настроил stunnel, но IIRC вы не можете поставить пароль на свой ключ.

это хорошая идея, я ценю, что вы рассказали мне об этом инструменте. И это привело меня к ответу, потому что я понял, что сделал глупую опечатку. Я использую 8443 в некоторых местах и ​​8433 в других местах. Измените stunnel.conf на 8433, и теперь он работает.

Luke 15.05.2022 22:06

Другие вопросы по теме