我几周来一直在努力将基于Eclipse的报表设计器(Jaspersoft Studio)连接到使用相互(双向)身份验证的远程报表存储库。我在他们的社区论坛上问过这个问题,但没有任何有用的回复,所以希望在这里有更多的运气。我会扩大这个问题,因为它可能不是(可能不是)特定软件的错误或问题。
首先,我使用Apache来处理SSL(TLS)连接,然后将流量路由到在其后的其他服务器上运行的各种虚拟主机(使用SNI)。该系统按预期工作。但是,对于这个特定的客户端,我在SSL握手期间收到错误:
警告:找不到合适的证书 - 没有客户端身份验证继续
由于客户端身份验证是强制性的,因此Apache只是拒绝连接。我已经使用浏览器和其他几个客户端测试了URL,所有这些客户端都运行良好。我编写了自己的SSL客户端,看看它是如何运行的,它还经过身份验证并连接到底层报表服务器。所有这些客户端都使用与Jaspersoft Studio相同的pk12和/或信任库。我还尝试将密钥库和信任库分开,并在客户端的.ini文件(-Djavax.net.ssl.keystore ...和-Djavax.net.ssl.truststore)中进行配置,但是它没有帮助。如果我在Apache中禁用客户端身份验证,一切都很完美。
我已经尝试过cyphersuites和协议以及我能想到的jks,pkcs12,crt等的所有组合。我已经包含了java无限强度库。但是,我并不相信这有任何问题,因为我尝试过的其他每个客户都可以使用。
因此,根据SO社区的经验,对于Apache,TLS,SNI和一般的虚拟主机,或者特别是Jaspersoft Studio,是否存在SSL可能需要的任何其他配置选项或环境设置客户端以这种方式连接到Apache,而不是将服务器根CA和客户端密钥/证书对导入配置的信任存储区?信任存储中是否有一些特定的密钥/证书配置只有这个特定的客户端需要?或者,有没有什么方法可以调试密钥管理器,以深入了解为什么它无法匹配我能看到的证书已明显加载?
非常感谢您提供的任何指示或建议!