QuickFix C++ и SSL: проблема с подключением к LMAX с помощью sTunnel

Цель:

Использование sTunnel с QuickFix C++: Для входа в LMAX UAT через SSL-internet и отправки FIX 4.2 сообщений через TCP-соединение. Другой похожий вопрос SO можно найти здесь, но он не отображается для решения этой конкретной проблемы.

ОС: Ubuntu 19.10 | Версия sTunnel: 5.55 | Движок: quickfix-1.15.1 | Место проведения: LMAX [UAT-LD4]

Проблема:

Не могу войти в UAT. После запуска sTunnel и последующего запуска клиентского приложения, которое сначала отправляет сообщение LOGON, аутентификация не получена. LMAX сообщил, что общедоступный IP-адрес клиентского сервера внесен в белый список.

*Конфигурации приведены ниже. При попытке входа в систему:

20210130-12:40:45.207811000 : Created session
20210130-12:40:45.208201000 : Connecting to 127.0.0.1 on port 143 (Source :0)
20210130-12:40:45.208384000 : Initiated logon request
20210130-12:40:55.217130000 : Socket Error: Connection reset by peer
20210130-12:40:55.217148000 : Disconnecting

Исходящее сообщение LOGON (взято из журнала), по-видимому, соответствует спецификациям LMAX FIX (пожалуйста, игнорируйте неправильную контрольную сумму, так как учетные данные были изменены). Это может свидетельствовать о том, что проблема связана с TCP-соединением. Исходящее LOGON сообщение:

8=FIX.4.2|9=104|35=A|34=1|49=SENDER_XYZ|52=20210130-12:40:45.208309000|56=TARGET_XYZ|95=12|96=PASSWORD_XYZ|98=0|108=15|10=094|

Ожидаемый результат: получение аутентификации LOGON от LMAX.

Результаты:

После выполнения этого руководство по установке и использованию sTunnel в Ubuntu., sTunnel затем запускается с sudo systemctl start stunnel4.service и проверяется статус службы, что дает: введите здесь описание изображения

После запуска sTunnel после запуска клиентского приложения в Wireshark можно увидеть пакеты, идущие от клиентского сервера к LMAX UAT, но кажется, что от LMAX UAT не возвращаются никакие пакеты.

Системные журналы

Запуск journalctl -xe создает следующие журналы.

  1. Во время работы sTunnel: https://pastebin.com/YE6xyNcM

  2. Во время работы sTunnel клиентское приложение запускается, а затем останавливается: https://pastebin.com/Vv55A35L

Конфигурация и установка

SSL-сертификаты были сгенерированы с помощью следующих команд:

openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
cat key.pem cert.pem >> /etc/stunnel/stunnel.pem

*Конфигурация sTunnel:

pid = /var/run/stunnel4/stunnel.pid

[LMAX-UAT]
client = yes
accept = 127.0.0.1:143
connect = fix-order.london-uat.lmax.com:443
sslVersion = TLSv1
verify = 2
CApath = /etc/ssl/certs/
cert = /etc/stunnel/stunnel.pem
checkhost = fix-order.london-uat.lmax.com

*Конфигурация QuickFix:

[DEFAULT]
ConnectionType=initiator
HeartBtInt=15
ReconnectInterval=2
FileStorePath=store
FileLogPath=log
StartTime=00:00:00
EndTime=00:00:00
UseDataDictionary=N
SocketConnectHost=127.0.0.1
SenderCompID=SENDER_XYZ
SocketUseSSL=N
TimestampPrecision=9

[SESSION]
BeginString=FIX.4.2
TargetCompID=TARGET_XYZ
SocketConnectPort=143

Итоговые вопросы:

  1. Учитывая вышеизложенное, может ли кто-нибудь определить, что препятствует обмену данными FIX через SSL-internet с UAT в LMAX?
  2. Основываясь на активности Wireshark, может ли это быть проблемой sTunnel, а не форматированием исходного сообщения LOGON?

person p.luck    schedule 30.01.2021    source источник
comment
Сообщение «Превышен TIMEOUTconnect, больше нет адресов для подключения» и снимок экрана Wireshark выглядят для меня так, как будто соединение не принято LMAX. Я предполагаю, что это проблема брандмауэра, то есть они не добавили соединение в белый список.   -  person Christoph John    schedule 30.01.2021
comment
Спасибо @ChristophJohn, на прошлой неделе LMAX заявил, что IP-адрес был внесен в белый список, но я согласен со скриншотом Wireshark. Даже если бы это был формат сообщения FIX, я бы все равно увидел некоторые TCP-пакеты, приходящие от UAT. Не знаю, куда теперь с этим идти.   -  person p.luck    schedule 01.02.2021
comment
Вы можете по телнету узнать их адрес?   -  person Christoph John    schedule 01.02.2021
comment
Я только что попытался подключиться к их IP-адресу по телнету, и это невозможно / время ожидания соединения истекло, поэтому я думаю, что это должно быть проблема с разрешением. Я запускаю это с VPS, и я полагаю, что у поставщика коллокации нет разрешения, позволяющего клиентам устанавливать TCP-соединения через SSL-интернет (только кросс-соединения). Я думаю, что это сузило его. Спасибо за вашу помощь @ChristophJohn   -  person p.luck    schedule 01.02.2021
comment
Пожалуйста. Возможно, вы сможете добавить окончательное решение позже. Тогда это может помочь и другим людям.   -  person Christoph John    schedule 01.02.2021
comment
Конечно, я еще не совсем уверен в решении (хотя оно было сужено), но я обязательно обновлю вопрос с ответом, как только он будет решен. Спасибо еще раз   -  person p.luck    schedule 01.02.2021


Ответы (1)


РЕШЕНИЕ:

Оказалось, что действительно IP-адрес (как услужливо заметил @Christoph John) не был правильно занесен в белый список сервером. -сторона.

Однако проблема осталась. В конфигурации sTunnel мне пришлось изменить sslVersion = TLSv1.1 на sslVersion = TLSv1.2.

Кроме того, похоже, что UAT не будет принимать сообщения FIX 4.2. После изменения версии протокола на FIX 4.4 я наконец-то смог LOGON перейти на UAT.

person p.luck    schedule 11.02.2021