Las*_*ama 5 java ssl quickfixj
我有一个使用QuickFIX / J编写的与彭博服务器连接的应用程序。最近,彭博社向其服务器添加了CA证书验证,并且它们还提供了用于握手的其他CA证书文件。
我的应用程序使用SSL连接,并且在从Bloomberg端禁用CA证书验证时,应用程序成功连接到服务器并获取消息。启用CA验证时,握手失败。
以下是我尝试的步骤。
ImportKeyJava类添加证书和密钥。我将其更改为添加多个证书。如果需要,我可以发布Java类。在应用程序级别需要更改什么吗?组态?还是在Java密钥库级别有什么要做?
在下面添加连接时出现错误消息:
20160823-06:04:15,FIX.4.4:XXXX-> XXXX,错误>(正在断开连接:套接字异常(/XXXX.XXXX.XXX.XX:20237):javax.net.ssl.SSLHandshakeException:SSL握手失败。)成功注销sessionId:FIX.4.4:XXXX-> XXXX
任何帮助表示赞赏!
配置:
[default]
# Settings which apply to all the Sessions.
ConnectionType=initiator
LogonTimeout=86400
ResetOnLogon=Y
UseDataDictionary=Y
MaxLatency=240
#StartTime=00:00:00
#EndTime=00:00:00
#StartTime=02:30:00
#EndTime=12:30:00
StartTime=02:21:00
EndTime=12:21:00
HeartBtInt=30
ReconnectInterval=5
[session]
# Settings specifically for one session
BeginString=FIX.4.4
SocketConnectHost=xxx.xxx.xxx.xxx
SocketUseSSL=Y
SocketKeyStorePassword=importkey
CheckLatency=N
#SendResetSeqNumFlag=Y
# new setups
FileLogHeartbeats=Y
##----- CAPS Configuration ---------##
FileStorePath=/etc/bloomburg-live/msgs
FileLogPath=/etc/bloomburg-live/logs
DataDictionary=/etc/bloomburg-live/conf/FIX44.xml
SocketKeyStore=/root/.keystore
TargetCompID=BLPSTP
SocketConnectPort=xxxxx
SenderCompID=CAPSTP
# log configuration
FileIncludeMilliseconds=Y
FileIncludeTimeStampForMessages=Y
ScreenLogShowHeartBeats=Y
#Filter heartbeats from output (both incoming and outgoing)
Run Code Online (Sandbox Code Playgroud)
PS-无需CA证书验证的应用程序工作。启用CA证书验证时出现错误。
是的,如果应用程序以前使用 ssl。您不需要在应用程序端做任何更改。通常 Quickfix/j 像 java 一样处理 ssl 验证。这意味着 openssl 和 java keytool 将为您解决问题。所以下面列出了步骤。
Run Code Online (Sandbox Code Playgroud)$ openssl pkcs12 -export -chain -in certificate.pem -inkey encodedKey.pem -out keystore.p12 -name importkey -CAfile CAcertificate.pem输入导出密码:importkey 验证 - 输入导出密码:importkey
Run Code Online (Sandbox Code Playgroud)keytool -importkeystore -destkeystore /root/.keystore -srckeystore keystore.p12 -alias importkey Enter destination keystore password: importkey Re-enter new password: importkey Enter source keystore password: importkey
Run Code Online (Sandbox Code Playgroud)SocketKeyStore=keystore.ImportKey cp /root/.keystore keystore.ImportKey /your/classpath
就是这样。请注意,将 ssl 密钥和证书添加到 java 密钥库对 quickfix/j 不起作用,因为 quickfix/j 正在维护自己的密钥库。因此,请确保在密钥添加过程之后将密钥库添加到类路径中。
参考 - https://blogs.oracle.com/jtc/entry/installing_trusted_certificates_into_a
| 归档时间: |
|
| 查看次数: |
1320 次 |
| 最近记录: |