5.3 Understanding the Cloud Bridge Agent TLS Security Policy

This section provides reference information for the Cloud Bridge Agent Transport Layer Security (TLS) policy. TLS is the successor to Secure Sockets Layer (SSL).

5.3.1 TLS Settings

Java ships with a security policy codified in the java.security policy file. It is typically located in the conf/security folder relative to $JAVA_HOME. Cloud Bridge containers are based upon the CAFapi Java 11 image. The CAFapi Java 11 container image disables weak TLS cipher suites in the disableWeakTlsAlgorithms.patch patch file. This is an excellent, if strict, security posture and meets the OpenText security requirements. However, some customers have had difficulty connecting with other resources on their respective networks. So, we have developed and tested a relaxed or "intermediate" security policy. This policy restores some of the ciphers disabled by the CAFapi team and further introduces key length limitations. The patch in its entirety appears below, but the following sections provide additional explanation.

5.3.2 Terminology

This section uses the following terms:

  • RSA (Rivest Shamir Adleman)

  • ECC (Elliptic Curve Cryptography)

  • Symmetric Cryptography (for example, AES)

  • Asymmetric Cryptography (Public/Private Key pair)

  • DH & ECDH (Diffie-Hellman & Elliptic-Curve Diffie-Hellman)

  • Hash Function (for example, SHA1, SHA256, SHA512)

  • CA (Certificate Authority)

  • Host Certificate (Certificate used for a web server)

5.3.3 Disabled Algorithms

Ideally, we would like to restrict communication to TLS 1.3. However, we must also make it possible to use the TLS 1.2 protocol safely, which causes us to exclude cipher suites that are available but should not be used.

Highlights

  1. Remove the TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 cipher from the list.

  2. Increase RSA key size: “RSA keySize < 2048”

Key Lengths

  • RSA less than 2048-bit

  • Diffie-Hellman less than 1024-bit

  • Elliptic Curve less than 224-bit

The following algorithms are disallowed and will not successfully negotiate the "handshake" process:

  • Camellia 128-bit with Cipher Block Chaining (CBC)

  • AES 256-bit with CBC

  • AES 128-bit with CBC

  • TLS DH DSS with AES 256-bit GCM SHA384 (under translation...)

5.3.4 Intermediate Java Security Policy

You can achieve “intermediate” level security by disabling the following suites and enforcing acceptable key sizes:

--- java.security  2021-10-05 06:34:16.000000000 -0500
+++ java.security.intermediate  2022-02-15 14:22:30.878689700 -0600
@@ -753,25 +753,20 @@
 #   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048, \
 #       rsa_pkcs1_sha1, secp224r1
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
-    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
+    RSA keySize < 2048, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
     CAMELLIA_128_CBC, AES_256_CBC, AES_128_CBC, \
     DES40_CBC, RC4_40, CAMELLIA_256_CBC, DES_CBC, \
     SEED_CBC, RC4_56, RC4_128, IDEA_CBC, RC2_CBC_40, \
     TLS_DH_DSS_WITH_AES_128_GCM_SHA256, \
-    TLS_DH_DSS_WITH_AES_256_GCM_SHA384, \
-    TLS_DH_RSA_WITH_AES_128_GCM_SHA256, \
-    TLS_DH_RSA_WITH_AES_256_GCM_SHA384, \
+    TLS_DH_DSS_WITH_AES_256_GCM_SHA384, \    
     TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, \
     TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, \
     TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, \
     TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, \
-    TLS_RSA_WITH_AES_256_GCM_SHA384, \
-    TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, \
-    TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, \
+    TLS_RSA_WITH_AES_256_GCM_SHA384, \    
     TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, \
     TLS_RSA_WITH_AES_128_GCM_SHA256, \
     TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, \
-    TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, \
     TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, \
     TLS_EMPTY_RENEGOTIATION_INFO_SCSV, \
     include jdk.disabled.namedCurves

5.3.5 Additional Resources