Цель:
Использование 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
создает следующие журналы.
Во время работы sTunnel: https://pastebin.com/YE6xyNcM
Во время работы 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
Итоговые вопросы:
- Учитывая вышеизложенное, может ли кто-нибудь определить, что препятствует обмену данными FIX через
SSL-internet
с UAT в LMAX? - Основываясь на активности Wireshark, может ли это быть проблемой
sTunnel
, а не форматированием исходного сообщенияLOGON
?