快速修复:如何在 Python 中使用 SSL

Jav*_*ona 2 python ssl quickfix fix-protocol

[抱歉我的英语] 我在连接我的用 python 开发的客户端 quckfix 时遇到问题。配置文件没有像我想要的那样响应。

如果我将路径(不正确的路径,强制错误)更改为文件 *.pem 并重新启动应用程序。该应用程序没有任何内容,只是保持正常运行。

就好像没有读取配置一样

在本教程中提到:quickfix 的 Python 实现不支持 SSL,这是真的吗?

https://medium.com/@federico_dv/fix-protocol-en-python-primeros-pasos-e-implementaci%C3%B3n-29a130b71ffc

这是用于在 Windows 中使用来自http://www.quickfixengine.org/的库 quickfix 的 python iomplementation

[DEFAULT]
PersistMessages=Y
ConnectionType=initiator
UseDataDictionary=Y 
StartTime=00:00:00
EndTime=23:59:00
FileStorePath=incoming 
FileLogPath=outgoing   


[SESSION]
SSLEnable=Y
SSLProtocol=TLSv1
ClientCertificateFil=C:\python\pyarb\cert\cert.pem
ClientCertificateKeyFile=C:\python\pyarb\cert\key.pem
StartTime=14:00:00
SenderCompID=AGENT
TargetCompID=FIX
EndTime=00:00:00
ConnectionType=initiator 
ApplVerID=9
BeginString=FIXT.1.1
DefaultApplVerID=9
TransportDataDictionary=quickfix_dicts\FIX50SP1.xml
AppDataDictionary=quickfix_dicts\FIX50SP1.xml
DataDictionary=quickfix_dicts\FIX50SP1.xml
SocketConnectPort=xxxx
SocketConnectHost=xxx.xxx.xxx.xxx
HeartBtInt=30
ReconnectInterval=30
ResetOnLogon=Y
ResetOnLogout=Y
ResetOnDisconnect=N
ResetSeqNumFlag=N
Run Code Online (Sandbox Code Playgroud)

sma*_*eck 6

是的,截至撰写本文时,quickfix 不支持开箱即用的 SSL。您需要手动创建从您的机器到需要 SSL 连接的主机的 SSL 隧道。你可以通过'stunnel'来做到这一点。在下面发布一些配置,希望可以解释如何设置。

隧道配置

log = append
output = <path where logs will be written>

[client]
client = yes
accept = <port of your choosing on the local machine for quickfix>
connect = <ssl host you want to connect to>:<port>
verifyPeer = yes
CAfile = <path of certification provided by SSL host>
checkHost = <ssl host you want to connect to>
debug = debug
Run Code Online (Sandbox Code Playgroud)

下面是一个例子

log = append
output = /home/user/logs

[client]
client = yes
accept = 1589
connect = 5.854.17.45:446
verifyPeer = yes
CAfile = /etc/ssl/certs/ca-cert.pem
checkHost = 5.854.17.45
debug = debug
Run Code Online (Sandbox Code Playgroud)

快速修复配置

[DEFAULT]
<Other relevant settings>
SocketConnectPort=1589
SocketConnectHost=localhost

[SESSION]
<Other relevant settings>
Run Code Online (Sandbox Code Playgroud)