Working version 25.11 25.08 25.05 25.02 24.11 23.11 Cloud Enterprise
Working version 25.11 25.08 25.05 25.02 24.11 23.11 Cloud Enterprise

Enabling Transport Layer Security (TLS) 1.3

  1. Ensure OpenSSL is installed locally.

  2. Acquire Tomcat Native.

  3. Configure environment to use tcnative.

    • (Windows) If tcnative has not been distributed through the plugin, move the tcnative.dll file to a folder accessible to Tomcat, such as within java.library.path.

    • (Linux) Add the link to tcnative to your LD_LIBRARY_PATH:

      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
      
  4. Set application properties to use tcnative with TLS1.3.

    • To use only TLS1.3:

      -Dhttps.protocols=TLSv1.3
      -Dhttp.connector.SSLProtocol=TLSv1.3
      -Dpush.connector.SSLProtocol=TLSv1.3
      -Dajp.connector.SSLProtocol=TLSv1.3
      
    • To use TLSv1.2 and 1.3 simultaneously:

      -Dhttps.protocols=TLSv1.2,TLSv1.3
      -Dhttp.connector.SSLProtocol=+TLSv1.2,+TLSv1.3
      -Dpush.connector.SSLProtocol=+TLSv1.2,+TLSv1.3
      -Dajp.connector.SSLProtocol=+TLSv1.2,+TLSv1.3
      
  5. To validate that TLS1.3 is enabled, look for log entries similar to the following on startup:

    Loaded Apache Tomcat Native library [2.0.8] using APR version [1.7.4].
    APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
    OpenSSL successfully initialized [OpenSSL 3.0.14 4 Jun 2024]
    Starting ProtocolHandler ["https-openssl-nio-7080"]
    

If you do not include these properties, the system will fallback to JSSE, which has non-compliant client certificate authentication.

You must use the plus sign (+) in the SSLProtocol properties to ensure the protocol is included. (You can also use the minus sign (-) to explicitly remove a protocol from inclusion. Failing to use the + or - syntax will default to inclusion, and cause warnings in the logs.