Cipher suites
The IBMJSSE2 provider supports many cipher suites. The lists that follow show the cipher suites that are supported by the IBMJSSE2 provider in order of preference.
- These lists apply to the latest release of the SDK; earlier releases might have a different order of preference.
- The jdk.tls.disabledAlgorithms security property takes precedence; a cipher suite can be in the default enabled list but be disabled by that security property.
- Default enabled cipher suites in order of preference
-
Note: In the following list, the string "TLS" can be used instead of "SSL" (but not vice versa) when the cipher suite name is used with these methods: javax.net.SSLEngine.setEnabledCipherSuites, javax.net.ssl.SSLSocket.setEnabledCipherSuites, and javax.net.ssl.SSLParameters.setCipherSuites. In all other situations, the cipher suite name is as listed. You can use the
com.ibm.jsse2.overrideDefaultCSName
system property to specify whether to use the old cipher suite name (set the property tofalse
, which is the default value) or the Oracle equivalent (set the property totrue
). For example, some cipher suite names begin with "TLS" when defined by Oracle but "SSL" in the IBM SDK. This difference is due to some cipher names being defined before the finalization of the first TSL specification.- TLS_AES_256_GCM_SHA384**1
- TLS_AES_128_GCM_SHA256**1
- TLS_CHACHA20_POLY1305_SHA2561
- SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384** 2
- SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA2562
- SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384** 2
- SSL_ECDHE_RSA_WITH_AES_128_GCM_SHA2562
- SSL_DHE_RSA_WITH_AES_256_GCM_SHA384** 2
- SSL_DHE_DSS_WITH_AES_256_GCM_SHA384** 2
- SSL_DHE_RSA_WITH_AES_128_GCM_SHA2562
- SSL_DHE_DSS_WITH_AES_128_GCM_SHA2562
- SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384** 2
- SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384** 2
- SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA2562
- SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA2562
- SSL_DHE_RSA_WITH_AES_256_CBC_SHA256** 2
- SSL_DHE_DSS_WITH_AES_256_CBC_SHA256** 2
- SSL_DHE_RSA_WITH_AES_128_CBC_SHA2562
- SSL_DHE_DSS_WITH_AES_128_CBC_SHA2562
- SSL_ECDH_ECDSA_WITH_AES_256_GCM_SHA384** 2
- SSL_ECDH_RSA_WITH_AES_256_GCM_SHA384** 2
- SSL_ECDH_ECDSA_WITH_AES_128_GCM_SHA2562
- SSL_ECDH_RSA_WITH_AES_128_GCM_SHA2562
- SSL_ECDH_ECDSA_WITH_AES_256_CBC_SHA384** 2
- SSL_ECDH_RSA_WITH_AES_256_CBC_SHA384** 2
- SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA2562
- SSL_ECDH_RSA_WITH_AES_128_CBC_SHA2562
- SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA**
- SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA**
- SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
- SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA
- SSL_DHE_RSA_WITH_AES_256_CBC_SHA**
- SSL_DHE_DSS_WITH_AES_256_CBC_SHA**
- SSL_DHE_RSA_WITH_AES_128_CBC_SHA
- SSL_DHE_DSS_WITH_AES_128_CBC_SHA
- SSL_ECDH_ECDSA_WITH_AES_256_CBC_SHA**
- SSL_ECDH_RSA_WITH_AES_256_CBC_SHA**
- SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA
- SSL_ECDH_RSA_WITH_AES_128_CBC_SHA
- SSL_RSA_WITH_AES_256_GCM_SHA384** 2
- SSL_RSA_WITH_AES_128_GCM_SHA2562
- SSL_RSA_WITH_AES_256_CBC_SHA256** 2
- SSL_RSA_WITH_AES_128_CBC_SHA2562
- SSL_RSA_WITH_AES_256_CBC_SHA**
- SSL_RSA_WITH_AES_128_CBC_SHA
- SSL_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA3
- SSL_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA3
- SSL_RSA_WITH_3DES_EDE_CBC_SHA3
- SSL_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA3
- SSL_ECDH_RSA_WITH_3DES_EDE_CBC_SHA3
- SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA3
- SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA3
- TLS_EMPTY_RENEGOTIATION_INFO_SCSV4
1 These cipher suites are available only for TLS 1.3 or later. Use of these suites also requires use of the IBMJCEPlus provider.
2 These cipher suites are available only for TLS 1.2.
3 These cipher suites are disabled by jdk.tls.disabledAlgorithms.
4 TLS_EMPTY_RENEGOTIATION_INFO_SCSV is a pseudo-cipher suite to support RFC 5746. See Transport Layer Security (TLS) Renegotiation Issue for more information.
** Cipher suites that use AES_256 require the JCE Unlimited Strength Jurisdiction Policy Files.
- Default disabled cipher suites in order of preference
-
Note: In the following list, the string "TLS" can be used instead of "SSL" (but not vice versa) when the cipher suite name is used with these methods: javax.net.SSLEngine.setEnabledCipherSuites, javax.net.ssl.SSLSocket.setEnabledCipherSuites, and javax.net.ssl.SSLParameters.setCipherSuites. In all other situations, the cipher suite name is as listed. You can use the
com.ibm.jsse2.overrideDefaultCSName
system property to specify whether to use the old cipher suite name (set the property tofalse
, which is the default value) or the Oracle equivalent (set the property totrue
). For example, some cipher suite names begin with "TLS" when defined by Oracle but "SSL" in the IBM SDK. This difference is due to some cipher names being defined before the finalization of the first TSL specification.- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 1, 6
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 1, 6
- TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 1, 6
- SSL_DH_anon_WITH_AES_256_GCM_SHA384** 1, 4
- SSL_DH_anon_WITH_AES_128_GCM_SHA256** 1, 4
- SSL_DH_anon_WITH_AES_256_CBC_SHA2561, 4
- SSL_ECDH_anon_WITH_AES_256_CBC_SHA** 4
- SSL_DH_anon_WITH_AES_256_CBC_SHA** 4
- SSL_DH_anon_WITH_AES_128_CBC_SHA2561, 4
- SSL_ECDH_anon_WITH_AES_128_CBC_SHA4
- SSL_DH_anon_WITH_AES_128_CBC_SHA4
- SSL_ECDH_anon_WITH_3DES_EDE_CBC_SHA4
- SSL_DH_anon_WITH_3DES_EDE_CBC_SHA4
- SSL_ECDHE_ECDSA_WITH_RC4_128_SHA5
- SSL_ECDHE_RSA_WITH_RC4_128_SHA5
- SSL_RSA_WITH_RC4_128_SHA5
- SSL_ECDH_ECDSA_WITH_RC4_128_SHA5
- SSL_ECDH_RSA_WITH_RC4_128_SHA5
- SSL_RSA_WITH_RC4_128_MD55
- SSL_ECDH_anon_WITH_RC4_128_SHA4
- SSL_DH_anon_WITH_RC4_128_MD54
- SSL_RSA_WITH_DES_CBC_SHA2
- SSL_DHE_RSA_WITH_DES_CBC_SHA2
- SSL_DHE_DSS_WITH_DES_CBC_SHA2
- SSL_DH_anon_WITH_DES_CBC_SHA2, 4
- SSL_RSA_EXPORT_WITH_DES40_CBC_SHA3
- SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA3
- SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA3
- SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA3, 4
- SSL_RSA_EXPORT_WITH_RC4_40_MD53
- SSL_DH_anon_EXPORT_WITH_RC4_40_MD53, 4
- SSL_DHE_DSS_WITH_RC4_128_SHA3
- SSL_RSA_WITH_NULL_SHA2561
- SSL_ECDHE_ECDSA_WITH_NULL_SHA
- SSL_ECDHE_RSA_WITH_NULL_SHA
- SSL_RSA_WITH_NULL_SHA
- SSL_ECDH_ECDSA_WITH_NULL_SHA
- SSL_ECDH_RSA_WITH_NULL_SHA
- SSL_ECDH_anon_WITH_NULL_SHA4
- SSL_RSA_WITH_NULL_MD5
- SSL_KRB5_WITH_3DES_EDE_CBC_SHA
- SSL_KRB5_WITH_3DES_EDE_CBC_MD5
- SSL_KRB5_WITH_RC4_128_SHA
- SSL_KRB5_WITH_RC4_128_MD5
- SSL_KRB5_WITH_DES_CBC_SHA2
- SSL_KRB5_WITH_DES_CBC_MD52
- SSL_KRB5_EXPORT_WITH_DES_CBC_40_SHA3
- SSL_KRB5_EXPORT_WITH_DES_CBC_40_MD53
- SSL_KRB5_EXPORT_WITH_RC4_40_SHA3
- SSL_KRB5_EXPORT_WITH_RC4_40_MD53
1 Cipher suites with SHA384 and SHA256 are available only for TLS 1.2.
2 RFC 5246 TLS 1.2 forbids the use of these suites. These can be used in the SSLv3/TLS1.0/TLS1.1 protocols, but cannot be used in TLS 1.2 and later.
3 RFC 4346 TLS 1.1 forbids the use of these suites. These can be used in the SSLv3/TLS1.0 protocols, but cannot be used in TLS 1.1 and later.
4 Although anonymous cipher suites are enabled, the
IBMJSSE2
TrustManager does not allow anonymous cipher suites. The default implementation can be overridden by providing your own TrustManager that allows anonymous cipher suites. See Accepting Anonymous Cipher Suites for information about creating your own X509TrustManager.5 These cipher suites are disabled to mitigate against CVE-2015-2808: Bar Mitzvah security vulnerability.
6 Use of the ChaCha suites also requires use of the IBMJCEPlus provider.
** Cipher suites that use AES_256 require the JCE Unlimited Strength Jurisdiction Policy Files.