Table of Contents
Overview
TLS 1.3 is a common since 2020, and established in a common point during the last years as a constant default for SSL Frontend communications across LoadBalancers or ADC’s.
But in return, using TLS 1.3 also to your Backend Web / Application-Servers, isn’t widely used.
The Issue
The config isn’t that hard, create a new SSL Backend Profile with a focus on TLS 1.3 and 1.2 only – here’s an example where I put also some TLS 1.2 Ciphers in between (non weak-ones!) according to a Frontend Profile – for higher compatibility to older App / Webservers:
#Backend SSL Profile with TLS 1.3: add ssl cipher BackendCipher_Q22026 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.3-AES256-GCM-SHA384 -cipherPriority 1 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.3-CHACHA20-POLY1305-SHA256 -cipherPriority 2 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.3-AES128-GCM-SHA256 -cipherPriority 3 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.2-ECDHE-RSA-AES256-GCM-SHA384 -cipherPriority 4 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.2-ECDHE-RSA-AES128-GCM-SHA256 -cipherPriority 5 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.2-ECDHE-RSA-CHACHA20-POLY1305 -cipherPriority 6 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.2-DHE-RSA-AES256-GCM-SHA384 -cipherPriority 7 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.2-DHE-RSA-AES128-GCM-SHA256 -cipherPriority 8 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.2-ECDHE-ECDSA-AES256-GCM-SHA384 -cipherPriority 9 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.2-ECDHE-ECDSA-AES128-GCM-SHA256 -cipherPriority 10 bind ssl cipher BackendCipher_Q22026 -cipherName TLS1.2-ECDHE-ECDSA-CHACHA20-POLY1305 -cipherPriority 11 add ssl profile Backend_Q22026 -sslProfileType BackEnd -eRSA DISABLED -sessReuse ENABLED -sessTimeout 300 -tls1 DISABLED -tls11 DISABLED -tls13 ENABLED -denySSLReneg FRONTEND_CLIENT bind ssl profile Backend_Q22026 -eccCurveName X25519_MLKEM768 bind ssl profile Backend_Q22026 -eccCurveName X_25519 bind ssl profile Backend_Q22026 -eccCurveName P_256 bind ssl profile Backend_Q22026 -eccCurveName P_384 bind ssl profile Backend_Q22026 -eccCurveName P_224 bind ssl profile Backend_Q22026 -eccCurveName P_521 bind ssl profile Backend_Q22026 -cipherName BackendCipher_Q22026 -cipherPriority 1 unbind ssl profile Backend_Q22026 -cipherName DEFAULT_BACKEND savec
As mentioned in a previous Post, there was a TLS 1.3 Backend issue where NetScaler can crash. It’s listed as a fixed issue in 73.30 (73.33):

As I’ve ran into exactly that issue (The SDX crypto hardware crashed and every VPX on the same SDX crashed, too) at a large customer, I wanted to double-check with NetScaler engineering, if there is everything fixed.
Sadly, it’s NOT fixed as described in NSHELP-42609.
NSHELP-42609 is completely fixed in 73.x. However, a different issue in the same area was introduced in 73.x (NSHELP-44985). Both issues are crashes related to backend TLS 1.3 connections and both issues have the same recommended config workaround –
set -sendCloseNotify NO
on the backend SSL profile. Disabling TLS 1.3 is not required to avoid either issue. So all of 72.x & 73.x builds of 14.1 version are good to go with TLS 1.3 enabled, as long as the recommended -sendCloseNotify NO is set on the backend SSL profiles. (And at the risk of repeating what may be well known already, TLS 1.3 frontend is completely unaffected by and unrelated to either of these issues). And 74.x will have the fix for the second issue (NSHELP-44985).
From my perspective, disabling a send Close Notify is not a great workaround. When NetScaler closes a connection to a Backend-Server, it doesn’t send close_notify-Alert, so the TCP-Connection will be cut with FIN or RST. This also doesn’t look great when doing network analysis.
If you need TLS 1.3 to your Backend to stay in security compliance now, disable Send Close-Notify (it’s enabled by default) on your backend SSL profile.
If you can wait, rest until 14.1 74.x will be released (targeted for early October) so the other TLS 1.3 issue NSHELP-44985 should also be fixed.
Summary
Wait for 14.1 74.x at the beginning of October, which will bring finally a clean TLS 1.3 backend usage for NetScaler. As this issue isn’t that well known, it means there isn’t that high amount of TLS 1.3 backend usage in the wild. Sure, there are other dependencies for example the need for Windows Server 2022 as a minimum for native TLS 1.3 support. I hope during the next years, it will be a forced standard for backend communication – not only securing frontend traffic, also till the backend.