SSL/TLS-CipherSpecs und -Cipher-Suites in den IBM MQ-Klassen für Java

Ob Anwendungen der IBM® MQ-Klassen für Java™ Verbindungen zu einem Warteschlangenmanager herstellen können, hängt davon ab, welche CipherSpec am Serverende des MQI-Kanals und welche Cipher-Suite am Clientende angegeben ist.

In der folgenden Tabelle sind die von IBM MQ unterstützten CipherSpecs sowie die entsprechenden Cipher-Suites aufgeführt.

Überprüfen Sie im Abschnitt Nicht weiter unterstützte CipherSpecs, ob und ggf. ab welchem Upgrade die in der folgenden Tabelle aufgeführten CipherSpecs von IBM MQ nicht mehr unterstützt wurden.

Wichtig: Die aufgeführten Cipher-Suites werden von der mit IBM MQ bereitgestellten IBM Java Runtime Environment (JRE) unterstützt. Ab IBM MQ Version 8.0.0, Fixpack 2 umfasst die Liste auch die Cipher-Suites, die von der Oracle Java-JRE unterstützt werden. Weitere Informationen zur Konfiguration Ihrer Anwendung für eine Oracle Java-JRE finden Sie im Abschnitt Anwendung für Oracle IBM Java- oder Oracle Java-Cipher-Suite-Zuordnungen konfigurieren.
In der Tabelle ist außerdem das Protokoll (SSL oder eine bestimmte TLS-Version) angegeben, das für die Kommunikation verwendet wird; darüber hinaus ist angegeben, ob die Cipher-Suite dem FIPS 140-2-Standard entspricht.
Anmerkung: Ab IBM MQ Version 8.0.0, Fixpack 2 werden das SSLv3-Protokoll und die Verwendung einiger IBM MQ-CipherSpecs nicht mehr unterstützt. Weitere Informationen finden Sie im Abschnitt Nicht weiter unterstützte CipherSpecs.

Wenn die Anwendung nicht so konfiguriert ist, dass eine Einhaltung des FIPS 140-2-Standards erzwungen wird, können Cipher-Suites, die als FIPS 140-2-konform gekennzeichnet sind, verwendet werden. Wurde die Anwendung für eine Einhaltung des FIPS 140-2-Standards konfiguriert (siehe die folgenden Hinweise zur Konfiguration), können nur die Cipher-Suites verwendet werden, die als FIPS 140-2-konform gekennzeichnet sind. Bei einem Versuch, eine andere Cipher-Suite zu verwenden, wird ein Fehler zurückgegeben.

Anmerkung: Jede JRE kann über mehrere Provider für Sicherheit über Verschlüsselung verfügen, von denen jeder eine Implementierung derselben Cipher-Suite bereitstellt. Nicht alle Sicherheitsprovider sind allerdings FIPS 140-2-zertifiziert. Wenn für eine Anwendung keine Einhaltung des FIPS 140-2-Standards erzwungen wird, besteht die Möglichkeit, dass eine nicht zertifizierte Implementierung der Cipher-Suite verwendet wird. Nicht zertifizierte Implementierungen arbeiten allerdings unter Umständen nicht FIPS 140-2-konform, auch wenn die Cipher-Suite theoretisch die von diesem Standard geforderten Mindestsicherheitsanforderungen erfüllt. Die folgenden Hinweise enthalten weitere Informationen zur Konfiguration von IBM MQ- Java-Anwendungen, damit die Einhaltung des FIPS 140-2-Standards erzwungen wird.

Weitere Informationen zur Konformität mit FIPS 140-2 und Suite-B bei CipherSpecs und Cipher-Suites finden Sie unter Specifying CipherSpecs. Unter Umständen müssen Sie auch Informationen in Zusammenhang mit den US-amerikanischen Federal Information Processing Standards beachten.

Damit damit alle Cipher-Suites verwendet werden können und FIPS 140-2- und/oder Suite-B-zertifiziert arbeiten, ist eine entsprechende JRE erforderlich. IBM Java 7 Service Refresh 4 Fixpack 2 oder eine höhere Version von IBM JRE stellen die erforderliche Unterstützung bereit.

Anmerkung: Für die Verwendung einiger Cipher-Suites müssen die uneingeschränkten Richtliniendateien in der JRE konfiguriert werden. Ausführlichere Informationen dazu, wie Richtliniendateien in einem SDK oder in einer JRE konfiguriert werden, finden Sie im Abschnitt IBM SDK Policy files der Security Reference for IBM SDK, Java Technology Edition, Version 7.
Tabelle 1. Von IBM MQ unterstützte CipherSpecs und deren entsprechende Cipher-Suites
CipherSpec Äquivalente Cipher-Suite (IBM JRE) Äquivalente Cipher-Suite (Oracle JRE) Protokoll FIPS 140-2-konform
ECDHE_ECDSA_3DES_EDE_CBC_SHA256 SSL_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA TLSv1.2 Ja
ECDHE_ECDSA_AES_128_CBC_SHA256 SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLSv1.2 Ja
ECDHE_ECDSA_AES_128_GCM_SHA256 SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLSv1.2 Ja
ECDHE_ECDSA_AES_256_CBC_SHA384 SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 TLSv1.2 Ja
ECDHE_ECDSA_AES_256_GCM_SHA384 SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLSv1.2 Ja
ECDHE_ECDSA_NULL_SHA256 SSL_ECDHE_ECDSA_WITH_NULL_SHA TLS_ECDHE_ECDSA_WITH_NULL_SHA TLSv1.2 Nein
ECDHE_ECDSA_RC4_128_SHA256 SSL_ECDHE_ECDSA_WITH_RC4_128_SHA TLS_ECDHE_ECDSA_WITH_RC4_128_SHA TLSv1.2 Nein
ECDHE_RSA_3DES_EDE_CBC_SHA256 SSL_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA TLSv1.2 Ja
ECDHE_RSA_AES_128_CBC_SHA256 SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLSv1.2 Ja
ECDHE_RSA_AES_128_GCM_SHA256 SSL_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLSv1.2 Ja
ECDHE_RSA_AES_256_CBC_SHA384 SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLSv1.2 Ja
ECDHE_RSA_AES_256_GCM_SHA384 SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLSv1.2 Ja
ECDHE_RSA_NULL_SHA256 SSL_ECDHE_RSA_WITH_NULL_SHA TLS_ECDHE_RSA_WITH_NULL_SHA TLSv1.2 Nein
ECDHE_RSA_RC4_128_SHA256 SSL_ECDHE_RSA_WITH_RC4_128_SHA TLS_ECDHE_RSA_WITH_RC4_128_SHA TLSv1.2 Nein
RC4_MD5_EXPORT SSL_RSA_EXPORT_WITH_RC4_40_MD5 SSL_RSA_EXPORT_WITH_RC4_40_MD5 SSLv3 Nein
FIPS_WITH_3DES_EDE_CBC_SHA SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA   SSLv3 Nein1
FIPS_WITH_DES_CBC_SHA SSL_RSA_FIPS_WITH_DES_CBC_SHA   SSLv3 Nein1
TLS_RSA_WITH_3DES_EDE_CBC_SHA 1 SSL_RSA_WITH_3DES_EDE_CBC_SHA SSL_RSA_WITH_3DES_EDE_CBC_SHA TLSv1 Ja
TLS_RSA_WITH_AES_128_CBC_SHA SSL_RSA_WITH_AES_128_CBC_SHA TLS_RSA_WITH_AES_128_CBC_SHA TLSv1 yes
TLS_RSA_WITH_AES_128_CBC_SHA256 SSL_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_128_CBC_SHA256 TLSv1.2 yes
TLS_RSA_WITH_AES_128_GCM_SHA256 SSL_RSA_WITH_AES_128_GCM_SHA256 TLS_RSA_WITH_AES_128_GCM_SHA256 TLSv1.2 yes
TLS_RSA_WITH_AES_256_CBC_SHA SSL_RSA_WITH_AES_256_CBC_SHA TLS_RSA_WITH_AES_256_CBC_SHA TLSv1 Ja
TLS_RSA_WITH_AES_256_CBC_SHA256 SSL_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA256 TLSv1.2 Ja
TLS_RSA_WITH_AES_256_GCM_SHA384 SSL_RSA_WITH_AES_256_GCM_SHA384 TLS_RSA_WITH_AES_256_GCM_SHA384 TLSv1.2 Ja
TLS_RSA_WITH_DES_CBC_SHA SSL_RSA_WITH_DES_CBC_SHA SSL_RSA_WITH_DES_CBC_SHA TLSv1 Nein
NULL_MD5 SSL_RSA_WITH_NULL_MD5 SSL_RSA_WITH_NULL_MD5 SSLv3 Nein
NULL_SHA SSL_RSA_WITH_NULL_SHA SSL_RSA_WITH_NULL_SHA SSLv3 Nein
TLS_RSA_WITH_NULL_SHA256 SSL_RSA_WITH_NULL_SHA256 TLS_RSA_WITH_NULL_SHA256 TLSv1.2 Nein
RC4_MD5_US SSL_RSA_WITH_RC4_128_MD5 SSL_RSA_WITH_RC4_128_MD5 SSLv3 Nein
TLS_RSA_WITH_RC4_128_SHA256 SSL_RSA_WITH_RC4_128_SHA SSL_RSA_WITH_RC4_128_SHA TLSv1.2 Nein
Anmerkung:
  1. Die CipherSpec TLS_RSA_WITH_3DES_EDE_CBC_SHA wird nicht weiter unterstützt. Nach wie vor sind mit dieser CipherSpec jedoch noch Datenübertragungen bis zu 32 GB möglich, bevor die Verbindung mit Fehler AMQ9288 beendet wird. Zur Vermeidung dieses Fehlers sollten Sie entweder auf Triple DES verzichten oder, wenn Sie diese CipherSpec verwenden möchten, die Zurücksetzung von geheimen Schlüsseln aktivieren.
  2. Die Namen dieser Cipher-Suites sind noch die ursprünglichen Namen, aus denen hervorgeht, dass diese Cipher-Suites früher FIPS-konform waren. Sie sind jetzt nicht mehr FIPS-konform und die Verwendung dieser Cipher-Suites wird nicht mehr unterstützt.
  3. Die folgende Cipher-Suite wird nicht mehr unterstützt:
    • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
    Wenn versucht wird, diese Cipher-Suite und die zugehörige IBM MQ-CipherSpec RC2_MD5_EXPORT zu verwenden, wird eine entsprechende Ausnahmebedingung ausgegeben. In Installationen, in denen diese Cipher-Suite/CipherSpec-Kombination verwendet wird, sollte zur Verwendung einer unterstützten Kombination übergegangen werden.

Anwendung für Oracle IBM Java- oder Oracle Java-Cipher-Suite-Zuordnungen konfigurieren

Ab IBM MQ Version 8.0.0, Fixpack 2 können Sie konfigurieren, ob Ihre Anwendung die standardmäßigen Zuordnungen zwischen IBM Java-Cipher-Suites und IBM MQ-CipherSpecs verwendet oder die Zuordnungen zwischen Oracle-Cipher-Suites und IBM MQ-CipherSpecs. In jedem Fall können Sie TLS-Cipher-Suites verwenden, unabhängig davon, ob Ihre Anwendung eine IBM JRE oder eine Oracle-JRE verwendet. Welche Zuordnungen verwendet werden, steuert die Java-Systemeigenschaft com.ibm.mq.cfg.useIBMCipherMappings. Für diese Eigenschaft sind folgende Werte möglich:
true
Die Zuordnungen zwischen IBM Java-Cipher-Suites und IBM MQ-CipherSpecs werden verwendet.
Dieser Wert ist der Standardwert.
false
Die Zuordnungen zwischen Oracle-Cipher-Suites und IBM MQ-CipherSpecs werden verwendet.

Weitere Informationen zur Verwendung von IBM MQ- Java- und TLS-Verschlüsselungscodes finden Sie den MQdev-Blogbeiträgen MQ Java, TLS Ciphers, Non-IBM JREs & APARs IT06775, IV66840, IT09423, IT10837 und The relationship between MQ CipherSpecs and Java Cipher Suites (Beziehung zwischen MQ-CipherSpecs und Java-Cipher-Suites).

SSL-Cipher-Suites und FIPS-Konformität für eine IBM MQ-Klassen für Java-Anwendung konfigurieren

  • Für eine Anwendung, die IBM MQ-Klassen für Java verwendet, gibt es die folgenden beiden Möglichkeiten, die SSL-Cipher-Suite für eine Verbindung zu konfigurieren:
    • Setzen Sie das Feld 'sslCipherSuite' in der Klasse 'MQEnvironment' auf den Namen der Cipher-Suite.
    • Setzen Sie die Eigenschaft CMQC.SSL_CIPHER_SUITE_PROPERTY in der Hashtabelle mit Eigenschaften, die an den MQQueueManager-Konstruktor übergeben wurde, auf den Namen der Cipher-Suite.
  • Eine Anwendung, die IBM MQ-Klassen für Java verwendet, kann die Konformität mit FIPS 140-2 auf zwei Arten durchsetzen:
    • Setzen Sie das Feld 'sslFipsRequired' in der Klasse 'MQEnvironment' auf 'true'.
    • Setzen Sie die Eigenschaft CMQC.SSL_FIPS_REQUIRED_PROPERTY in der Hashtabelle mit den Eigenschaften, die an den MQQueueManager-Konstruktor übergeben wurde, auf 'true'.

Einschränkungen bei der Interoperabilität

Je nach Protokoll (SSLv3 oder eine bestimmte TLS-Version) sind einige Cipher-Suites sind unter Umständen mit mehr als einer IBM MQ-CipherSpec kompatibel, allerdings wird nur die Cipher-Suite/CipherSpec-Kombination unterstützt, die die in Tabelle 1 angegeben TLS-Version verwendet. Versuche, eine der nicht unterstützten Cipher-Suite/CipherSpecs-Kombinationen zu verwenden, schlagen mit einer entsprechenden Ausnahmebedingung fehl. In Installationen, in denen eine dieser Cipher-Suite/CipherSpec-Kombinationen verwendet wird, sollte zur Verwendung einer unterstützten Kombination übergegangen werden.

In der folgenden Tabelle sind die Cipher-Suites aufgeführt, für die diese Einschränkung gilt.

Tabelle 2. Cipher-Suites und die unterstützten bzw. nicht unterstützten CipherSpecs
Cipher-Suite Unterstützte TLS-CipherSpec Nicht unterstützte SSL-CipherSpec
SSL_RSA_WITH_3DES_EDE_CBC_SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA 1 TRIPLE_DES_SHA_US
SSL_RSA_WITH_DES_CBC_SHA TLS_RSA_WITH_DES_CBC_SHA DES_SHA_EXPORT
SSL_RSA_WITH_RC4_128_SHA TLS_RSA_WITH_RC4_128_SHA256 RC4_SHA_US
Anmerkung:
  1. Die CipherSpec TLS_RSA_WITH_3DES_EDE_CBC_SHA wird nicht weiter unterstützt. Nach wie vor sind mit dieser CipherSpec jedoch noch Datenübertragungen bis zu 32 GB möglich, bevor die Verbindung mit Fehler AMQ9288 beendet wird. Zur Vermeidung dieses Fehlers sollten Sie entweder auf Triple DES verzichten oder, wenn Sie diese CipherSpec verwenden möchten, die Zurücksetzung von geheimen Schlüsseln aktivieren.