簡體   English   中英

QuickFIX / J CA證書驗證

[英]QuickFIX/J CA Certificate Validation

我有一個使用QuickFIX / J編寫的與彭博服務器連接的應用程序。 最近,彭博社向其服務器添加了CA證書驗證,並且它們還提供了用於握手的其他CA證書文件。

我的應用程序使用SSL連接,並且在從Bloomberg端禁用CA證書驗證時,應用程序成功連接到服務器並獲取消息。 啟用CA驗證時,握手失敗。

以下是我嘗試的步驟。

  1. 以前,我使用ImportKey Java類添加證書和密鑰。 我將其更改為添加多個證書。 如果需要,我可以發布Java類。
  2. 當我使用openssl s_client連接到服務器時,它成功連接到服務器。

在應用程序級別需要更改什么嗎? 組態? 還是在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)

PS-無需CA證書驗證的應用程序工作。 啟用CA證書驗證時出現錯誤。

是的,如果該應用程序以前使用過ssl。 您不需要在應用程序端進行任何更改。 通常,Quickfix / j像Java一樣處理ssl驗證。 這意味着openssl和Java keytool將為您解決問題。 因此,步驟在下面列出。

  1. 使用信任證書,私鑰和ca證書創建pkcs12密鑰庫。
 $ openssl pkcs12 -export -chain -in certificate.pem -inkey encodedKey.pem -out keystore.p12 -name importkey -CAfile CAcertificate.pem 

輸入導出密碼:importkey驗證-輸入導出密碼:importkey

  1. 使用keytool,通過名為/root/.keystore的quickfix / j將PKCS12密鑰庫導入到生成的密鑰庫中。 同樣,您可以選擇其他密碼。
 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 
  1. 更改配置文件,然后將密鑰庫復制到類路徑。
 SocketKeyStore=keystore.ImportKey cp /root/.keystore keystore.ImportKey /your/classpath 

而已。 請注意,由於quickfix / j會維護自己的密鑰庫,因此無法向quickfix / j添加ssl密鑰和證書到Java密鑰庫。 因此,請確保在密鑰添加過程之后將密鑰庫添加到類路徑。

參考-https: //blogs.oracle.com/jtc/entry/installing_trusted_certificates_into_a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM