我想知道TLSv2与JDk8密码套件和规格与MQ8?
我使用' runmqckm'在MQ8上创建了一个jks文件。 unix上的命令
jks是否依赖于Ciphersuites和Spec on parameter' -sig_alg'
https://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.ref.adm.doc/q083860_.htm
Question on TLSv2 Ciphersuite
SUite<> SPec组合无法在以下网站工作
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q113220_.htm
CipherSpec - TLS_RSA_WITH_AES_128_CBC_SHA256
等效CipherSuite - 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&#34 ;;
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?
Oracle CipherSuite
1.TLS_RSA_WITH_NULL_SHA256
2.TLS_RSA_WITH_AES_128_CBC_SHA256
3.TLS_RSA_WITH_AES_256_CBC_SHA256
MQ Spec
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
2017年2月20日更新
当示例代码,放在应用程序中获取低于授权错误 新问题链接如下
http://stackoverflow.com/questions/42347461/authorization-errors-with-mq8-jdk8
答案 0 :(得分:2)
关于-sig_alg
命令的runmqckm
标志,以下详细信息位于您提供的链接中:
在创建证书期间使用的散列算法 请求,自签名证书或证书签名。 此散列算法用于创建与之关联的签名 新创建的证书或证书请求。
在岸上,-sig_alg
命令的runmqckm
标志与您在Java中指定的CipherSuite或您在MQ SVRCONN通道上指定的CipherSpec无关。
在我对您之前提问的回答中,mq-error-on-ssl-enabled我提供了以下信息:
APAR IV66840中的表格包含以下信息:
以下WebSphere MQ CipherSuite到CipherSpec映射具有 这个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 CipherSuite到CipherSpec映射 已由此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
更新(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
或者将以下内容添加到qm.ini的SSL:
节并启动队列管理器:
SSL:
AllowWeakCipherSpec=TLS_RSA_WITH_NULL_SHA256
以下是有关此主题的更多详细信息。
在我对你先前问题的回答中,MQ Error on SSL enabled&#34;我提供了以下信息:
有一篇非常好的IBM developerWorks博客文章&#34; SSL and TLS Cipher Specification Deprecations for the MQ Product&#34; 发布于2016年5月19日由Miguel A. Rodriguez详细介绍 各种修订包中不推荐使用哪些密码。
在该链接中指出:
<强> V 即可。随着IBM MQ V8.0.3.3,SSL和弱TLS密码的发布 与之前一样,规范继续被弃用(禁用) 上面提到的版本,但现在弱的密码规范需要一个 新的价值。此更改适用于SSL和弱TLS密码 规格。
AMQ_SSL_WEAK_CIPHER_ENABLE=Value or SSL: AllowWeakCipherSpec=Value
环境变量或队列管理器配置设置的可接受值如下:
- 单个SSL或弱TLS密码规范名称。
- 由逗号分隔的一串SSL或弱TLS密码规范名称。
- &#34; ALL&#34;的价值启用所有SSL和所有弱TLS密码规范。
。 。
<强> VI 即可。弃用(禁用)SSL密码规范和弱TLS 密码规范。
注意:这些是需要环境的密码规范 之前讨论过的变量或qm.ini设置,以便使用它们 用于加密通信。
以下是已弃用(禁用)密码规范的列表 按协议,版本和适用的操作分类 系统。有关弃用的密码规范的详细信息可以是 可在产品文档部分&#34;弃用的CipherSpecs中找到。&#34;
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
无效
答案:重复使用与先前问题相同的答案&#34; MQ Error on SSL enabled&#34;我提供了以下信息:
搜索到您收到的错误后,我发现了这个dW答案 发布&#34; Why do I get AMQ9771, 2393 SSL Initialization error from a MQ Java/JMS application when trying to use an TLS AES 256 cipher?&#34;。 它声明如下:
在这种情况下,问题是由尝试使用AES 256强引起的 密码算法。
大多数Java JRE,包括Oracle / Sun和IBM都有Import Enits 启用加密算法。这限制了最大密钥大小 还有一些算法。
尝试使用AES 256密码时,例如 ECDHE_RSA_AES_256_CBC_SHA384或 TLS_RSA_WITH_AES_256_CBC_SHA256 MQ Java / JMS应用程序,您需要确保您的JRE支持此功能 密码。在大多数情况下,当需要更强的密码算法时, 例如AES 256密码,JCE Unlimited Strength Jurisdiction 必须获取策略文件并将其安装在JDK / JRE中。
这在JDK / JRE文档中有说明:对于Oracle 1.7:
http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html
oracle网站上面的链接指出:
如果需要更强的算法(例如,具有256位的AES) 密钥),JCE Unlimited Strength Jurisdiction Policy Files 一定是 获得并安装在JDK / JRE中。
用户有责任验证此操作是否正确 根据当地法规允许。
我建议您使用较低的CipherSuite
TLS_RSA_WITH_AES_128_CBC_SHA256
,或按照上面的建议去做 获取并安装 JCE Unlimited Strength Jurisdiction Policy 文件 强>