无法建立黑白通讯客户端程序和MQ系列

问题描述

根据公司的政策,我们需要使用MQ服务器使用客户端进程来加密通讯通道。在我们的分布式系统中,我们需要一些Java进程来建立与MQ的连接。我说一下,过程A和B。

A和B在不同的虚拟机上运行。它们具有完全相同的环境,包括相同版本(1.8.0_151-b12)的JRE,相同的依赖项,相同的JCE扩展文件。我们将ssl相关的JVM参数添加到每个进程的启动脚本中,例如

-Djavax.net.ssl.trustStore
-Djavax.net.ssl.trustStorePassword
-Djavax.net.ssl.keyStore
-Djavax.net.ssl.keyStorePassword

相应的trustStore和keyStore文件已就位并已正确引用。

A工作正常,我们观察到SSL握手和加密消息。但是,进程B失败,并显示以下消息:

ignoring unavailable cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
...
Caused by: java.lang.IllegalArgumentException: Cannot support 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA with currently installed providers

我确实花时间在网上检查,并且有一个相关的帖子来自here:它建议下载和升级JCE文件-事实是我已经安装了JCE文件(无限制),并且两个过程都相同。我认为JCE文件不是问题的根源。

我的问题是,为了使客户端建立SSL连接,MQ团队是否也必须安装JCE文件?端上的配置是否已经完成?我可能会错过的任何内容

更新:问题已解决。请在下面查看我的评论

解决方法

在1.8.0_162之前,默认情况下不包括并启用无限制强度辖区策略文件(crypto.policy设置为无限制)。在1.8.0_151,“无限强度管辖权策略文件”已包括但未启用。

请检查您是否确实在两个VM上都运行Java 1.8.0_151-b12,如果要确保工作VM上的Java安全文件crypto.policy设置与非工作VM相同。