带JDK8 Ciphersuites和MQ8的TLSv2?

问题描述:

我想知道带有JDK8 Ciphersuites的TLSv2和带有MQ8的规格吗?
我在UNIX
上创建一个MQ8 JKS文件与 'runmqckm' 命令的jks对参数对密码组和规格的任何依赖性 '-sig_alg'带JDK8 Ciphersuites和MQ8的TLSv2?

https://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.ref.adm.doc/q083860_.htm

Question on TLSv2 Ciphersuite 

SUITE <>规格组合不工作如下网站
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q113220_.htm
密码规范 - TLS_RSA_WITH_AES_128_CBC_SHA256
等效的密文 - SSL_RSA_WITH_AES _128_CBC_SHA256
协议 - TLSv1.2工作
FIPS 140-2兼容 - 是

工作
MQEnvironment.sslCipherSuite = “TLS_RSA_WITH_AES_128_CBC_SHA256”
ALTER CHANNEL(TEST.CH)CHLTYPE(SVRCONN)SSLCIPH(TLS_RSA_WITH_AES_128_CBC_SHA256)

不工作
MQEnvironment.sslCipherSuite =“SSL_RSA_WITH_AES_128_CBC_SHA256”;
ALTER CHANNEL(TEST.CH)CHLTYPE(SVRCONN)SSLCIPH(TLS_RSA_WITH_AES_128_CBC_SHA256)

Only 3 TLS Ciphers i can Test as below , what spec i can use? 

甲骨文密文
1.TLS_RSA_WITH_NULL_SHA256
2.TLS_RSA_WITH_AES_128_CBC_SHA256
3.TLS_RSA_WITH_AES_256_CBC_SHA256

MQ规格
1 ??
2.TLS_RSA_WITH_AES_128_CBC_SHA256
3.。

Only 1 cipher i can use part of TLS (JDK8 + MQ8)? 

工作
TLS_RSA_WITH_AES_128_CBC_SHA256 - > TLS_RSA_WITH_AES_128_CBC_SHA256

不工作

TLS_RSA_WITH_NULL_SHA256 - > TLS_RSA_WITH_NULL_SHA256

ALTER CHANNEL(TEST.CH) CHLTYPE(SVRCONN) SSLCIPH(TLS_RSA_WITH_NULL_SHA256) 
    1 : ALTER CHANNEL(TEST.CH) CHLTYPE(SVRCONN) SSLCIPH(TLS_RSA_WITH_NULL_SHA256) 
AMQ8242: SSLCIPH definition wrong. 

不工作

TLS_RSA_WITH_AES_256_CBC_SHA256 - > TLS_RSA_WITH_AES_256_CBC_SHA256

MQJE001: Completion Code '2', Reason '2393'. 
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2393'. 
     at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:249) 
     at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:450) 
     at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:487) 
     at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:97) 
     at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:194) 
     at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:868) 
     at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:816) 
     at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:758) 
     at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:200) 
     at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:682) 
     at MQProducerTLS.main(MQProducerTLS.java:89) 
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2393;AMQ9204: Connection to host 'localhost(2017)' rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2393;AMQ9771: SSL handshake failed. [1=java.lang.IllegalArgumentException[Cannot support TLS_RSA_WITH_AES_256_CBC_SHA256 with currently installed providers],3=localhost/127.0.0.1:2017 (localhost),4=SSLSocket.createSocket,5=default]],3=localhost(2017),5=RemoteTCPConnection.makeSocketSecure] 
     at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:2282) 
     at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1294) 
     at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect(InterceptedJmqiImpl.java:376) 
     at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect(ESEJMQI.java:560) 
     at com.ibm.mq.MQSESSION.MQCONNX_j(MQSESSION.java:916) 
     at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:235) 
     ... 10 more 
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2393;AMQ9771: SSL handshake failed. [1=java.lang.IllegalArgumentException[Cannot support TLS_RSA_WITH_AES_256_CBC_SHA256 with currently installed providers],3=localhost/127.0.0.1:2017 (localhost),4=SSLSocket.createSocket,5=default] 
     at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.makeSocketSecure(RemoteTCPConnection.java:2049) 
     at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:861) 
     at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:1277) 
     at com.ibm.mq.jmqi.remote.impl.RemoteConnection.connect(RemoteConnection.java:863) 
     at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSessionFromNewConnection(RemoteConnectionSpecification.java:409) 
     at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSession(RemoteConnectionSpecification.java:305) 
     at com.ibm.mq.jmqi.remote.impl.RemoteConnectionPool.getSession(RemoteConnectionPool.java:146) 
     at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1730) 
     ... 15 more 
Caused by: java.lang.IllegalArgumentException: Cannot support TLS_RSA_WITH_AES_256_CBC_SHA256 with currently installed providers 
     at sun.security.ssl.CipherSuiteList.<init>(CipherSuiteList.java:81) 
     at sun.security.ssl.SSLSocketImpl.setEnabledCipherSuites(SSLSocketImpl.java:2461) 
     at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.makeSocketSecure(RemoteTCPConnection.java:2041) 
     ... 22 more 

更新上20-FEB-2017

当样本代码,放置在AP折叠得到以下授权错误 新问题的链接如下

http://*.com/questions/42347461/authorization-errors-with-mq8-jdk8 
+0

所有三个密码都在工作,其次是为每个非工作密码提及的步骤。**感谢** ..需要了解的只有这些密码我可以使用或更多NON-IBM-JRE密码是否存在? –

+0

APAR [IV66840](http://www-01.ibm.com/support/docview.wss?uid=swg1IV66840)中的表格列出了为NON-IBM-JRE启用的所有密码,必须采取考虑到其中一些被认为是弱密码,并且默认情况下被禁用,除非你启用它们。 – JoshMc

+0

你可以谷歌,并找到很多关于此的信息。密码规范名称的格式是“KEY Exchange”_“Encryption”_“Hash Algorithm”'。 “TLS_RSA_WITH_NULL_SHA256”密码规范名称中的“WITH_NULL”表示存在** NO **数据加密。在你看过的'TLS_RSA_WITH_AES_256_CBC_SHA256'的三个中最强。我不知道对更新的'ECDHE_'密码规格进行评论。这将是一个很好的问题,在一个新的职位问。 – JoshMc

关于为runmqckm命令-sig_alg标志,下面的详细信息都在您所提供的链接:

创作过程中使用的哈希算法证书 请求,自签名证书或证书的签名。 该哈希算法用于创建与新创建的证书或证书请求相关联的签名 。

在岸边的runmqckm命令-sig_alg标志不相关的密文你在Java或您的MQ SVRCONN通道指定的CipherSpec指定。

在我回答你刚才的问题“mq-error-on-ssl-enabled我提供了这样的信息:

在APAR IV66840表有这样的信息:

以下WebSphere MQ的密文到密码规范映射已启用 通过此APAR获取WebSphere MQ v7.1和v7.5,其中 用于Java类和JMS支持SHA-2类:￴

Oracle CipherSuite    IBM MQ CipherSpec 
TLS_RSA_WITH_NULL_SHA256  TLS_RSA_WITH_NULL_SHA256 
TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_128_CBC_SHA256 
TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA256 

如果您点击APAR IV66840的链接,我提供了关于MQ v8的相关信息。0:

以下WebSphere MQ密文到密码规范映射 已经通过此APAR为WebSphere MQ V8启用:

CipherSuite      --> CipherSpec 
... 
TLS_RSA_WITH_AES_128_CBC_SHA256 --> TLS_RSA_WITH_AES_128_CBC_SHA256 
... 
TLS_RSA_WITH_AES_256_CBC_SHA256 --> TLS_RSA_WITH_AES_256_CBC_SHA256 
... 
TLS_RSA_WITH_NULL_SHA256  --> TLS_RSA_WITH_NULL_SHA256 

UPDATE(2017/02/16)来解决进一步的问题

问题1:TLS_RSA_WITH_NULL_SHA256不工作

答:TLS_RSA_WITH_NULL_SHA256被认为是一个弱密码规范,因为它不提供数据的加密和被默认禁用V8.0。

如果你真的想你了启动队列管理器之前使用该弱密码规范,你要么设置以下环境变量:

AMQ_SSL_WEAK_CIPHER_ENABLE=TLS_RSA_WITH_NULL_SHA256 

或添加以下到SSL:节的qm.ini中和启动队列管理器:

SSL: 
    AllowWeakCipherSpec=TLS_RSA_WITH_NULL_SHA256 

下面是有关此主题的更多详细信息。

在我回答你的问题之前,“MQ Error on SSL enabled‘我提供以下信息:

有一个很好的IBM developerWorks上的博客文章’SSL and TLS Cipher Specification Deprecations for the MQ Product” 发布2016年5月19日由米格尔·罗德里格斯A.那去详细了解有关 哪些密码在各种修订包中不推荐使用。

在这个链接它指出:

V。使用发行版IBM MQ V8.0.0.3,SSL和弱TLS密码 继续弃用(禁用)规范,如前面提到的 版本,但现在弱密码规范要求 新值。此更改适用于SSL和弱TLS密码 规格。

AMQ_SSL_WEAK_CIPHER_ENABLE=Value 
or 
SSL: 
AllowWeakCipherSpec=Value 

的环境变量或队列管理器配置设置的可接受的值如下:

  • 单一SSL或TLS弱密码规范名称。
  • 由逗号分隔的SSL或弱TLS密码规范名称的字符串。
  • 用于启用所有SSL和所有弱TLS密码规范的“ALL”的值。

。 。 。

VI。已弃用(已禁用)SSL密码规范和弱TLS 密码规范。

注意:这些密码规范需要前面讨论的环境 变量或qm.ini设置,以便将它们用于加密通信,其中包括 。

下面是按协议,版本和适用的操作系统分类的不推荐使用(禁用)密码规范 的列表。有关弃用的密码规范的详细信息可能是 ,位于产品文档部分“弃用的密码规格”中。

SSL V3
All CipherSpecs are disabled by default

TLS 1.0
Cipher Specification Operating System
TLS_RSA_EXPORT_WITH_RC2_40_MD5 IBMi
TLS_RSA_EXPORT_WITH_RC4_40_MD5 IBMi
TLS_RSA_WITH_DES_CBC_SHA All Platforms
TLS_RSA_WITH_NULL_MD5 IBMi
TLS_RSA_WITH_NULL_SHA IBMi
TLS_RSA_WITH_RC4_128_MD5 IBMi

TLS 1.2
Cipher Specification Operating System
ECDHE_ECDSA_NULL_SHA256 Linux,Windows,Unix
ECDHE_ECDSA_RC4_128_SHA256 Linux,Windows,Unix
ECDHE_RSA_NULL_SHA256 Linux,Windows,Unix
ECDHE_RSA_RC4_128_SHA256 Linux,Windows,Unix
TLS_RSA_WITH_NULL_NULL Linux,Windows,Unix
TLS_RSA_WITH_NULL_SHA256 All Platforms
TLS_RSA_WITH_RC4_128_SHA256 Linux,Windows,Unix


问题2:TLS_RSA_WITH_AES_256_CBC_SHA256不工作

答:重复使用相同的回答你之前的问题 “MQ Error on SSL enabled” 我提供了以下信息:

搜索后关于您收到的错误,我发现这个dW回答 后“Why do I get AMQ9771, 2393 SSL Initialization error from a MQ Java/JMS application when trying to use an TLS AES 256 cipher?”。 它指出以下几点:

在这种情况下,该问题是由试图使用AES 256强 密码算法造成的。

大多数Java JRE,包括Oracle/Sun和IBM在 上都具有导入限制启用了加密算法。这限制了最大密钥大小 以及一些算法。

当尝试使用AES 256加密,如 ECDHE_RSA_AES_256_CBC_SHA384或TLS_RSA_WITH_AES_256_CBC_SHA256与 MQ的Java/JMS应用程序,你需要确保你的JRE支持此 密码。在大多数情况下,当需要更强大的密码算法时,例如AES 256密码,JCE无限强度辖区 策略文件必须获取并安装在JDK/JRE中。

此的JDK/JRE文档中应注意:对于Oracle 1.7:

http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html

以上到oracle站点链接指出:

如果需要更强的算法(例如AES与256位的 键),JCE Unlimited Strength Jurisdiction Policy Files 必须是 获得并安装在JDK/JRE中。

用户有责任根据当地法规确认此行为是否允许为 。

我会建议你要么使用低密文 TLS_RSA_WITH_AES_128_CBC_SHA256,或按照上面 劝获取并安装JCE无限制强度仲裁策略 文件