我正在对使用 QuickFIX/J 并使用 Groovy 2.4.5 编写并使用 Gradle 2.10 构建的应用程序进行故障排除。此 FIX 服务器还通过 Spring-boot 1.2.6 提供 API。
虽然当从 OS X 运行时应用程序可以通过 SSL 连接连接到测试对等接受器,但当从 Ubuntu 14.04 运行时它不起作用。
Linux 事件日志:
[timestamp]: Disconnecting: Socket exception (/[ip:port]): javax.net.ssl.SSLHandshakeException: SSL handshake failed.
我已尝试使用 keytool
检查证书,但没有发现证书有问题。我还检查了文件路径是否匹配大小写,排除了 OSX 文件系统不区分大小写的性质。
证书由运行接受器的公司生成并签名。我该如何进一步解决 Ubuntu 上的握手失败问题?
更新
在为 QuickFIX/J 实现更多日志记录后,我获得了额外的信息。我尝试过的所有谷歌搜索都没有很好地解释错误的含义:
[timestamp] [NioProcessor-3] DEBUG o.apache.mina.filter.ssl.SslHandler - Unexpected exception from SSLEngine.closeInbound(). javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack?
请您参考如下方法:
就我而言,事实证明这是 QuickFIX/J 库使用的 Apache Mina 版本的问题。我们改用 Stunnel,所以我不知道这个错误是否已经修复。