Как настроить SSL-сертификаты на сервере Digital Ocean для размещения приложения ReactJS, подключающегося к серверу GoLang в той же Droplet?

Я размещаю веб-сайт с шахматными приложениями на Digital Ocean Droplet.

На сервере я обслуживаю статическое приложение React с использованием pm2. Я также использую сервер GoLang с одной конечной точкой Websocket в качестве бэкэнда. Таким образом, эти два сервера находятся на одной и той же дроплете, т.е. на одном и том же IP-адресе.

Существует балансировщик нагрузки, пересылающий HTTPS в HTTP с использованием SSL-сертификатов, созданных с помощью интеграции Lets Encrypts в Digital Ocean.

Сайт хорошо работает на Chrome (см. https://tonycodes.com/). Однако на мобильных телефонах и в браузере Safari я получаю сообщение об ошибке.

Веб-инспектор Safari возвращает эту ошибку при попытке подключения к веб-сокету сервера Golang:

WebSocket network error: OSStatus Error -9807: Invalid certificate chain

Это настройки балансировки нагрузки:

Скриншот балансировки нагрузки

Конечная точка веб-сокета GoLang находится на порту 8081. Внешний интерфейс React находится на порту 80.

Я не знаком с правилами цепочки сертификатов шифрования SSL, которые могут нарушаться при этой настройке. Любая помощь очень ценится и спасибо заранее!

1 ответ

Ваш код пытается подключиться к wss://157.230.65.223:8081/uci, Но сертификат вашего сервера не был выдан для "157.230.65.223" - он был выдан для "tonycodes.com". Это несоответствие между запрошенным URL-адресом и полученным сертификатом всегда вызывает критический сбой в соединении TLS, так как в противном случае обходится одна из основных мер безопасности TLS.

Измените URL вашего веб-сокета на wss://tonycodes.com:8081/uci,

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