Здесь вы можете задать любые вопросы по MyChat, по работе программы, её настройке, лицензированию и т.д.
Аватара пользователя
SergeyG
Здравствуйте еще раз!

Решил включить шифрование трафика в клиенте MyChat.
На данный момент подключается к серверу нестабильно. При первом входе в программу почти всегда подключение проходит. Пытаешься зайти под другим пользователем - просто висит.
Пробовал на своем сервере и на открытом mychat-server.com
В логах на клиенте выглядит вот так:
Код: Выделить всё
[2021.10.28 21:28:30] [INFO] Поиск сервера MyChat...
[2021.10.28 21:28:30] [INFO] Подключение к серверу  (IP mychat-server.com, порт 2004)...
[2021.10.28 21:28:30] [INFO] Cryptographic library version: OpenSSL 1.0.2n  7 Dec 2017
[2021.10.28 21:28:31] [INFO] SSL/TLS version: TLSv1.2
[2021.10.28 21:28:41] [INFO] Поиск сервера MyChat...
[2021.10.28 21:28:41] [INFO] Подключение к серверу  (IP mychat-server.com, порт 2004)...
[2021.10.28 21:28:42] [INFO] Cryptographic library version: OpenSSL 1.0.2n  7 Dec 2017
[2021.10.28 21:28:43] [INFO] SSL/TLS version: TLSv1.2


На сервере - либо нет никакой информации (пакетики не доходят), либо не нашел нужный лог.
Аватара пользователя
Алексей Пикуров
Пытаешься зайти под другим пользователем - просто висит

Поясните свою последовательность действий и покажите полный лог.
Аватара пользователя
SergeyG
Последовательность:
1. Сделал дистрибутив с включенным шифрованием.
2. Установил на тестовую машину.
3. Запускаю клиент MyChat, ввожу логин и пароль (заранее созданные пользователи, есть пароль к серверу)
4. Очень долго пытается войти и не входит. (примерно в 30% случаях входит).
5. Если вошел в УЗ - нажимаю менеджер аккаунтов, меняю на другой, пытаюсь войти - точно не входит.
6. Перезагружаю клиент, пока не войду на сервер с какого-либо раза, убираю в настройках шифрование трафика - все работает отлично.
7. Зарегистрировался у Вас на сервере с отключенным шифрованием, попытался войти несколько раз - отлично.
8. Включил шифрование - снова не входит.

Во вложении лог.
Клиент и сервер последних версий.
С мобильного приложения работает на ура.
Вложения
(37.02 КБ) Скачиваний: 38
Аватара пользователя
Алексей Пикуров
Понял вас. Мы используем библиотеку OpenSSL, вероятно, на вашем компьютере есть какой-то софт, который конфликтует с ней (файлы libeay32.dll и ssleay32.dll). Поэтому рекомендуем либо найти этот софт, либо выключить шифрование. Такая вот рекомендация.
Аватара пользователя
Алексей Пикуров
И ещё момент. Наш сервер mychat-server.com — тестовый, мы постоянно его обновляем и, как правило, версия на нём более свежая, чем у вас может быть. Сейчас это 8.12.1.

"Боевым" клиентом старайтесь не подключаться к нашему серверу публичному. Тестовым — без проблем.
Аватара пользователя
SergeyG
А как-то понять что конфликтует можно?
Я-то внутри сети, можно и без шифрования, но будет большое количество внешних клиентов, которым, желательно, включить.

P.S. Чисто косметическая сноска - чтобы не плодить темы.
Если на сервере отключена автоматическая настройка TURN и прописаны свои порты, то в сетевых настройках при нажатии на кнопку "Проверить подключение" проверяется все равно по стандартному 8888 порту (ну и соответственно говорит, что TURN недоступен, но все работает).
Аватара пользователя
Алексей Пикуров
А как-то понять что конфликтует можно?

Я не знаю. Поищите на компе эти два файла, посмотрите, у кого они используются. Возможно, стоит обновить этот софт.
Я-то внутри сети, можно и без шифрования, но будет большое количество внешних клиентов, которым, желательно, включить.

Поставьте на другой компьютер и проверьте.
P.S. Чисто косметическая сноска - чтобы не плодить темы.

Лучше плодить. Сделайте отдельную тему, разберёмся.
Аватара пользователя
SergeyG
На счет поиска - понял, спасибо.
Попробовал на 2 соседних машинах (из ПО только офисный пакет, Adobe Reader, 7Zip) - тоже не работает. Будем искать.
Аватара пользователя
Алексей Пикуров
Сделайте тему отдельную насчёт TURN, будем смотреть.
Аватара пользователя
SergeyG
Я по TURN сделаю завтра.
По поводу шифрования - ну ничего не использует эти 2 библиотеки.
Теперь первый раз после запуска клиента, если логиниться под одним и тем же пользователем - точно заходит. Если потом выйти, то снова не зайдет. Ну и Wireshark говорит, что Hello получает сервер и отвечает, но потом данные вообще не ходят.
Аватара пользователя
Алексей Пикуров
Я не знаю, в чём может быть дело. Могу сказать только, что иногда мы сталкивались с таким поведением на некоторых компьютерах. Причину мы не знаем и решить эту проблему не удалось.
Аватара пользователя
SergeyG
В общем, может быть в будущем поможет.
При включенном шифровании использование смены аккаунтов невозможно.
Скорее всего, неправильно отрабатывает именно эта функция.
Если из клиента делать "MyChat->Выход", то при следующем запуске вход пользователя отрабатывает замечательно (проверено с десяток раз подряд).
Wireshark нам показывает следующее при нормальном функционировании (то есть запускаем клиента с шифрованием и соединение проходит успешно):
Код: Выделить всё
172.16.12.51   188.254.55.19   TLSv1.2   361   Client Hello //здоровается с сервером
188.254.55.19   172.16.12.51   TCP   60   2004 → 60170 [ACK] Seq=1 Ack=341 Win=66304 Len=0
188.254.55.19   172.16.12.51   TLSv1.2   589   Server Hello, Certificate, Server Hello Done //сервер отвечает
172.16.12.51   188.254.55.19   TLSv1.2   244   Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message //тут же клиент запрашивает ключ
188.254.55.19   172.16.12.51   TLSv1.2   280   New Session Ticket, Change Cipher Spec, Encrypted Handshake Message // сервер выдает
172.16.12.51   188.254.55.19   TCP   54   60170 → 2004 [ACK] Seq=531 Ack=762 Win=131328 Len=0 //запрос настроек .json
188.254.55.19   172.16.12.51   TLSv1.2   1209   Application Data //а это ответ
172.16.12.51   188.254.55.19   TCP   54   60170 → 2004 [ACK] Seq=531 Ack=1917 Win=132096 Len=0 //тут ходят пакетики
172.16.12.51   188.254.55.19   TLSv1.2   336   Application Data //тут ходят пакетики
188.254.55.19   172.16.12.51   TLSv1.2   93   Application Data //тут ходят пакетики

188.254.55.19   172.16.12.51   TLSv1.2   85   Encrypted Alert
188.254.55.19   172.16.12.51   TCP   60   2004 → 60170 [FIN, ACK] Seq=3870 Ack=1019 Win=65792 Len=0
172.16.12.51   188.254.55.19   TCP   54   60170 → 2004 [ACK] Seq=1019 Ack=3871 Win=131584 Len=0
172.16.12.51   188.254.55.19   TLSv1.2   85   Encrypted Alert
172.16.12.51   188.254.55.19   TCP   54   60170 → 2004 [FIN, ACK] Seq=1050 Ack=3871 Win=131584 Len=0
188.254.55.19   172.16.12.51   TCP   60   2004 → 60170 [RST, ACK] Seq=3871 Ack=1050 Win=0 Len=0
//и в последнем блоке они закончили общение

И если жать выход из клиента - все повторяется также.
А вот если сменить учетную запись общение идет по-другому:
Код: Выделить всё
172.16.12.51   188.254.55.19   TLSv1.2   361   Client Hello //клиент здоровается
188.254.55.19   172.16.12.51   TCP   60   2004 → 60362 [ACK] Seq=1 Ack=341 Win=66304 Len=0
188.254.55.19   172.16.12.51   TLSv1.2   589   Server Hello, Certificate, Server Hello Done //сервер тоже
172.16.12.51   188.254.55.19   TCP   54   60362 → 2004 [ACK] Seq=341 Ack=536 Win=131584 Len=0 // а клиент пропускает запрос ключа и сразу делает запрос настроек
188.254.55.19   172.16.12.51   TCP   1180   2004 → 60362 [PSH, ACK] Seq=536 Ack=341 Win=66304 Len=1126 [TCP segment of a reassembled PDU] //ну и сервер ему их и отдает по незашифрованному каналу, потому что ему без разницы как отдавать
172.16.12.51   188.254.55.19   TCP   54   60362 → 2004 [FIN, ACK] Seq=341 Ack=1662 Win=132096 Len=0 //а так как канал нешифрованный, клиент просит заканчивать
188.254.55.19   172.16.12.51   TCP   60   2004 → 60362 [ACK] Seq=1662 Ack=342 Win=66304 Len=0
188.254.55.19   172.16.12.51   TCP   60   2004 → 60362 [FIN, ACK] Seq=1662 Ack=342 Win=66304 Len=0
172.16.12.51   188.254.55.19   TCP   54   60362 → 2004 [ACK] Seq=342 Ack=1663 Win=132096 Len=0


Из всего вышесказанного - видимо, необходимо реализовать смену функцию смены аккаунта (или сервера) через полноценный выход из приложения, так как оно второй раз не хочет создавать шифрованную связь.
И скорее всего где-то рядом и решение проблемы этого топика viewtopic.php?f=1&t=6500
Аватара пользователя
Алексей Пикуров
При включенном шифровании использование смены аккаунтов невозможно.

Пробую сейчас, всё работает, как часы. Вероятно, есть какая-то локальная зависимость на вашей хост-системе.
Аватара пользователя
Алексей Пикуров
Обновили OpenSSL, обновитесь, попробуете уже на ней, окей?