Do Classic Load Balancers, Application Load Balancers, and Network Load Balancers support SSL/TLS session resumption?
Last updated: 2020-05-26
Do Classic Load Balancers, Application Load Balancers, and Network Load Balancers support Secure Sockets Layer/Transport Layer Security (SSL/TLS) session resumption?
All types of load balancers support SSL/TLS session resumption. However, the connection methods that they support varies.
SSL/TLS connection methods
There are two types of TLS handshakes: full and abbreviated. The full handshake is performed only once. After the handshake, the client establishes an SSL/TLS session with the server. On subsequent connections, the abbreviated handshake is used to resume the previously negotiated session more quickly.
There are two ways to establish or resume a TLS connection:
- SSL session IDs – This method is based on both the client and server keeping session security parameters for a period of time after a fully negotiated connection is terminated. A server that intends to use session resumption assigns a unique identifier for the session, called the session ID. The server then sends the session ID back to the client in the ServerHello message. To resume an earlier session, the client must submit the appropriate session ID in its ClientHello message. If the server finds the corresponding session in its cache and accepts the request to resume the session, then the server sends back the same session identifier and continues with the abbreviated SSL handshake. Otherwise, the server issues a new session identifier and switches to a full handshake.
- SSL session tickets – This method doesn’t require server-side storage. The server gathers all session data, encrypts it, and then sends it back to the client in the form of a ticket. On subsequent connections, the client submits the ticket back to the server. Then, the server checks the ticket integrity, decrypts the contents, and uses the information in it to resume the session. If the server or client doesn't support this extension, you can fall back to the session identifier mechanism built into SSL.
Supported SSL/TLS connection methods for each load balancer type
- Classic Load Balancers support session ID-based SSL/TLS session resumption but don't support session ticket-based SSL session resumption. SSL session caching is supported at the node level. If a client connects to node B using the SSL session ID received from node A, then the SSL handshake reverts to a full handshake. After that, a new SSL session ID is generated by node B.
- Application Load Balancers support both session ID and session ticket-based SSL session resumption. Both session IDs and session tickets are supported at the node level. If a client connects to node B using the SSL session ID or session ticket received from node A, then the SSL handshake reverts to a full handshake. After that, a new SSL session ID and session ticket are generated by node B.
- Network Load Balancers support only session tickets for session resumption. Resumption using session tickets is supported at the regional level. Clients can resume TLS sessions with a Network Load Balancer using any of its IP addresses.