通过QuickFixJ SSL连接Bloomberg时SSL握手失败报错如何解决
- 先清理配置重复项:你的session配置段中重复定义了
HeartBtInt(先后写了60、30两个值)、ReconnectInterval(先后写了5、5两个值),先删除重复配置,避免QuickFixJ加载配置时出现异常取值。 - 校验证书配置有效性:
- 确认程序运行的工作目录下,
.\cert.pfx文件存在且程序有读取权限,证书为未过期的Bloomberg BETA环境对应PKCS12格式证书,证书绑定的SenderCompID与配置中填写的一致 - 确认
SocketKeyStorePassword填写正确,没有多输空格、特殊字符转义错误的问题
- 确认程序运行的工作目录下,
- 排查加密套件与JDK权限问题:
- 你配置的
CipherSuites=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384需要JDK开启JCE无限强度管辖权限支持,JDK8早期默认版本未开启该权限会导致256位AES加密套件无法使用,可先替换为Bloomberg支持的低强度加密套件测试,或安装对应JDK版本的JCE权限补丁 - 可通过openssl命令先验证网络与证书的可用性,执行命令:
openssl s_client -connect 69.191.198.38:8228 -tls1_2 -cipher DHE-RSA-AES256-GCM-SHA384 -pkcs12 cert.pfx -passin pass:你的证书密码,如果该命令也握手失败,优先排查证书有效性、网络防火墙拦截、加密套件不匹配问题
- 你配置的
- 开启SSL调试日志定位具体错误:启动Java程序时添加JVM参数
-Djavax.net.debug=ssl,handshake,运行连接流程后查看日志,可直接定位是证书校验失败、协议版本不匹配、加密套件无交集还是信任链缺失问题 - 补充信任库配置:如果服务端证书不在JDK默认信任库中,需要额外配置
SocketTrustStore参数指向导入了Bloomberg根证书的信任库文件,否则服务端证书校验不通过会直接触发SSL握手失败
内容的提问来源于stack exchange,提问作者user16806803
相关产品推荐
相关产品推荐

