Opened 5 years ago
Closed 5 years ago
#42 closed баг (fixed)
Порт не подключается к серверу по TLS
Reported by: | AlexLir | Owned by: | alx |
---|---|---|---|
Priority: | critical | Milestone: | 1 очередь |
Keywords: | Cc: | Director, san |
Description
Имеются два устройства MC04-WL, сервер и клиент.
Поле Ciphers в настройках порта 1(RS-232) обоих устройств установлено в значение "пусто".
После включения обоих устройств, порт клиента не подключается к серверу.
Так-же между этими устройствами настроен туннель VPN, туннель работает, данные проходят.
Лог со стороны клиента:
3gd[243]: tcp_tty.cpp:198: connecting to 37.29.46.78 port 1001 (fd 17)... 3gd[243]: link.cpp:192: --> Link::error(): connection closed (17)
Лог со стороны сервера
3gd[243]: link.cpp:363: connect from ::ffff:46.229.134.176:42670 (19) 3gd[243]: link.cpp:192: --> Link::error(): connection closed (19)
p.s.
- Как выяснилось, в этой ситуации, можно "заставить" клиента подключиться к серверу проведя следующие магические ритуалы на обоих устройствах:
- В Ciphers вместо "пусто" установить значение ALL
- Загрузить заново сертификат и ключ в блок (тот же самый что уже загружен)
- Запись только настройки ALL, без повторной записи сертификата, эффекта не даёт.
- Если в Ciphers установлено ALL, то после загрузки порт клиента соединяется с сервером.
p.p.s. Подозреваю что Chiphers в значении пусто, может быть не корректной настройкой, в таком случае "претензия" в том что изменение её в значение ALL происходит не сразу, а только после повторной загрузки сертификата или перезапуска.
Change History (11)
comment:1 by , 5 years ago
Cc: | added; removed |
---|
comment:2 by , 5 years ago
Cc: | added; removed |
---|
comment:3 by , 5 years ago
Owner: | set to |
---|---|
Status: | new → assigned |
comment:4 by , 5 years ago
comment:5 by , 5 years ago
Сервер
Jan 29 07:32:56 ntpd[254]: Soliciting pool server 91.189.89.198 Jan 29 07:32:57 ntpd[254]: Soliciting pool server 2001:67c:1560:8003::c7 Jan 29 07:33:11 3gd[243]: link.cpp:363: connect from ::ffff:46.229.134.176:56384 (23) Jan 29 07:33:11 3gd[243]: link.cpp:192: --> Link::error(): connection closed (23) Jan 29 07:33:41 3gd[243]: link.cpp:363: connect from ::ffff:46.229.134.176:56386 (23) Jan 29 07:33:41 3gd[243]: link.cpp:192: --> Link::error(): connection closed (23) Jan 29 07:33:56 login[289]: ROOT LOGIN on '/dev/ttyS0' Jan 29 07:34:04 ntpd[254]: Soliciting pool server 2001:67c:1560:8003::c8 Jan 29 07:34:11 3gd[243]: link.cpp:363: connect from ::ffff:46.229.134.176:56388 (23) Jan 29 07:34:11 3gd[243]: link.cpp:192: --> Link::error(): connection closed (23) Jan 29 07:34:42 3gd[243]: link.cpp:363: connect from ::ffff:46.229.134.176:56390 (23) Jan 29 07:34:42 3gd[243]: link.cpp:192: --> Link::error(): connection closed (23)
Клиент
Jan 29 07:33:41 3gd[242]: link.cpp:192: --> Link::error(): connection closed (25) Jan 29 07:33:57 ntpd[254]: Soliciting pool server 2001:67c:1560:8003::c7 Jan 29 07:34:11 3gd[242]: tcp_tty.cpp:198: connecting to 37.29.46.78 port 1001 (fd 25)... Jan 29 07:34:12 3gd[242]: link.cpp:192: --> Link::error(): connection closed (25) Jan 29 07:34:42 3gd[242]: tcp_tty.cpp:198: connecting to 37.29.46.78 port 1001 (fd 25)... Jan 29 07:34:42 3gd[242]: link.cpp:192: --> Link::error(): connection closed (25) Jan 29 07:35:06 ntpd[254]: Soliciting pool server 2001:67c:1560:8003::c7 Jan 29 07:35:12 3gd[242]: tcp_tty.cpp:198: connecting to 37.29.46.78 port 1001 (fd 25)... Jan 29 07:35:12 3gd[242]: link.cpp:192: --> Link::error(): connection closed (25) Jan 29 07:35:20 login[287]: ROOT LOGIN on '/dev/ttyS0'
comment:6 by , 5 years ago
Спасибо. Здесь в логе, к сожалению, нет никакой дополнительной информации - только указание на то, что было соединение, и оно сразу разорвалось. Видимо, не смогли выполнить TSL handshake. А вот почему не смогли - вопрос... Надо бы придумать, как выводить в лог более подробную информацию о том, почему не выполнено соединение...
comment:7 by , 5 years ago
Проверил код - вроде бы после любой успешной загрузки сертификата соединение пересоздается заново, что включает в себя и новую загрузку сертификатов...
follow-ups: 9 10 comment:8 by , 5 years ago
Алексей, а всё-таки, Chiphers в значении "пусто" это корректная настройка или нет?
comment:9 by , 5 years ago
Replying to san:
Алексей, а всё-таки, Chiphers в значении "пусто" это корректная настройка или нет?
Если ты имел в виду параметр "Ciphers" - то да, корректная.
comment:10 by , 5 years ago
Replying to san:
Алексей, а всё-таки, Chiphers в значении "пусто" это корректная настройка или нет?
Я перечитал описание функции SSL_CTX_set_cipher_list(). Вероятно, я неправильно понимал ее ранее. Как я понял сейчас, значение "пусто" - это, формально, корректная настройка, но, так как в пустом списке нет ни одного cipher, соединение TLS установить с такой настройкой невозможно.
Таким образом, проблемой является только неприменение настройки Ciphers сразу после ее изменения.
Replying to AlexLir:
Хм... Вообще-то в логе каждая строка должна начинаться с даты и времени записи. В приведенных же фрагментах даты и времени в начале строк нет. Это наводит на мысль, что записи из лога приведены не полностью... Если это действительно так, прошу привести полные фрагменты лога.