2017-02-12 286 views
1

我想知道帶有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://stackoverflow.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

回答

2

關於爲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無限制強度仲裁策略 文件