与接受者建立 SSL 通信不需要 QuickFIX 发起者证书
QuickFIX initiator certificates are not required to establish SSL communication with the acceptor
我一直在使用 QuickFIX 在客户端 API 上工作,我打算使用 SSL 和基于证书的身份验证。我通过以下方式为接受者和发起者生成了自签名证书:
1) 生成并导出 server/acceptor 证书:
keytool -genkeypair -keyalg RSA -keysize 2048 -alias server -keystore server.jks
keytool -export -alias server -file server.cer -keystore server.jks
2) 生成并导出 client/initiator 证书:
keytool -genkeypair -keyalg RSA -keysize 2048 -alias client -keystore client.jks
keytool -export -alias client -file client.cer -keystore client.jks
3) 将 server/acceptor 证书导入客户端密钥库:
keytool -import -v -trustcacerts -alias server -file server.cer -keystore client.jks
4) 将 client/initiator 证书导入 server/acceptor 密钥库:
keytool -import -v -trustcacerts -alias client -file client.cer -keystore server.jks
接受器配置:
SocketUseSSL=Y
SocketKeyStore=server.jks
SocketKeyStorePassword=password
启动器配置:
SocketUseSSL=Y
SocketKeyStore=client.jks
SocketKeyStorePassword=password
似乎一切正常,数据正在加密。但是,如果我删除启动器的 client.jks 密钥库文件,我将得到一个 QuickFIX 日志条目,上面写着 "client.jks: keystore not found, using empty keystore"。奇怪的是,发起者仍然能够连接并建立有效的 FIX 会话。由于未提供有效证书,我希望连接会立即断开。我错过了什么吗?
默认情况下不需要客户端证书,您必须这样设置:
NeedClientAuth=Y
我一直在使用 QuickFIX 在客户端 API 上工作,我打算使用 SSL 和基于证书的身份验证。我通过以下方式为接受者和发起者生成了自签名证书:
1) 生成并导出 server/acceptor 证书:
keytool -genkeypair -keyalg RSA -keysize 2048 -alias server -keystore server.jks
keytool -export -alias server -file server.cer -keystore server.jks
2) 生成并导出 client/initiator 证书:
keytool -genkeypair -keyalg RSA -keysize 2048 -alias client -keystore client.jks
keytool -export -alias client -file client.cer -keystore client.jks
3) 将 server/acceptor 证书导入客户端密钥库:
keytool -import -v -trustcacerts -alias server -file server.cer -keystore client.jks
4) 将 client/initiator 证书导入 server/acceptor 密钥库:
keytool -import -v -trustcacerts -alias client -file client.cer -keystore server.jks
接受器配置:
SocketUseSSL=Y
SocketKeyStore=server.jks
SocketKeyStorePassword=password
启动器配置:
SocketUseSSL=Y
SocketKeyStore=client.jks
SocketKeyStorePassword=password
似乎一切正常,数据正在加密。但是,如果我删除启动器的 client.jks 密钥库文件,我将得到一个 QuickFIX 日志条目,上面写着 "client.jks: keystore not found, using empty keystore"。奇怪的是,发起者仍然能够连接并建立有效的 FIX 会话。由于未提供有效证书,我希望连接会立即断开。我错过了什么吗?
默认情况下不需要客户端证书,您必须这样设置: NeedClientAuth=Y