Does URLSession support ticket-based TLS session resumption

My company has a server that supports ticket-based TLS session resumption (per RFC 5077). We have done Wireshark captures that show that our iOS client app, which uses URLSession for REST and WebSocket connections to the server, is not sending the TLS "session_ticket" extension in the Client Hello package that necessary to enable ticket-based resumption with the server.

Is it expected that URLSession does not support ticket-based TLS session resumption? If "yes", is there any way to tell URLSession to enable ticket-based session resumption? the lower-level API set_protocol_options_set_tls_tickets_enabled() hints that the overall TLS / HTTP stack on IOS does support ticket-based resumption, but I can't see how to use that low-level API with URLSession.

I can provide (lots) more technical details if necessary, but hopefully this is enough context to determine whether ticket-based TLS resumption is supported with URLSession.

Any tips / clarifications would be greatly appreciated.

Answered by DTS Engineer in 810036022

Focusing on the HTTP side of this right now, my understanding is that tickets are enabled on HTTP/2 but not HTTP/3. Does that match your testing?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Focusing on the HTTP side of this right now, my understanding is that tickets are enabled on HTTP/2 but not HTTP/3. Does that match your testing?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

We are using the older HTTP/1.1 protocol, but with servers that support TLS 1.2. The version of HTTP shouldn't matter since the TLS (formerly SSL) session is established before the HTTP layer of the protocol starts.

There are some security concerns about ticket-based session resumption in TLS 1.2 (search the web for "we-need-to-talk-about-session-tickets") that appear to be fixed in TLS 1.3. So perhaps the issue is that the Apple security team decided to not support ticket-based session resumption in TLS 1.2, and URLSession does not yet support TLS 1.3? ** Is there any way you could check with them? **

I will also try testing our app against a TLS 1.3 server to see if ticket-based resumption works there.

I really appreciate your help!

References I have found that do not quite answer my question:

Does URLSession support ticket-based TLS session resumption
 
 
Q