SSL_CTX_SET_NUM_TICKETS(3ossl)

πŸ“¦
version 15.1 Β· 2 versions
, in freebsd 15.1

πŸ’… SSL_CTX_SET_NUM_TICKETS πŸ’…

okay bestie, welcome to the 3ossl manual page for SSL_set_num_tickets, SSL_get_num_tickets, SSL_CTX_set_num_tickets, SSL_CTX_get_num_tickets, and SSL_new_session_ticket β€” literally the whole friend group that controls how many TLSv1.3 session tickets get issued. 🎟️✨


🌸 NAME 🌸

SSL_set_num_tickets, SSL_get_num_tickets, SSL_CTX_set_num_tickets, SSL_CTX_get_num_tickets, SSL_new_session_ticket β€” the squad that controls the number of TLSv1.3 session tickets that are issued. no cap, that's the whole job. 🫢


✨ SYNOPSIS ✨

#include <openssl/ssl.h>

int SSL_set_num_tickets(SSL *s, size_t num_tickets);
size_t SSL_get_num_tickets(const SSL *s);
int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets);
size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx);
int SSL_new_session_ticket(SSL *s);

πŸŽ€ DESCRIPTION πŸŽ€

so here's the tea. β˜•

SSL_CTX_set_num_tickets() and SSL_set_num_tickets() are the ones you call from a server application β€” they set the number of TLSv1.3 session tickets that will be sent to the client after a full handshake. you drop the number you want (and yes, it could be 0) into the num_tickets argument. typically you wanna call these bad boys before the start of the handshake. timing is everything, iykyk. ⏰

the default number of tickets is 2. and listen β€” following a resumption, the number of tickets issued will never be more than 1, regardless of the value you set via SSL_set_num_tickets() or SSL_CTX_set_num_tickets(). that's not a bug, that's just the vibe. and if num_tickets is set to 0, then no tickets will be issued for either a normal connection or a resumption. zero means zero, periodt. πŸ’€

tickets also get issued on receipt of a post-handshake certificate from the client, following a request by the server using SSL_verify_client_post_handshake(3). these new tickets will be associated with the updated client identity (i.e. including their certificate and verification status πŸ‘‘). the number of tickets issued will normally be the same as was used for the initial handshake. and if the initial handshake was a full handshake, then SSL_set_num_tickets() can be called again prior to calling SSL_verify_client_post_handshake() to update the number of tickets that will be sent. glow-up your ticket count fr fr. πŸ”₯

now, to issue tickets after other events (like application-layer changes, the plot twists of networking), SSL_new_session_ticket() is what a server application uses to request that a new ticket be sent when it is safe to do so. 🧚 new tickets are only allowed to be sent in this manner after the initial handshake has completed, and only for TLS 1.3 connections β€” so don't try this on anything else, bestie, it's not gonna slay.

by default, the ticket generation and transmission are delayed until the server is starting a new write operation, so that it is bundled with other application data being written and properly aligned to a record boundary. efficient! iconic! bundled! 🎁 if the connection was at a record boundary when SSL_new_session_ticket() was called, the ticket can be sent immediately (without waiting for the next application write) by calling SSL_do_handshake().

SSL_new_session_ticket() can be called more than once to request additional tickets be sent; all such requests are queued and written together when it is safe to do so and triggered by SSL_write() or SSL_do_handshake(). πŸ“¬

⚠️ okay this part is important so read it twice: a successful return from SSL_new_session_ticket() indicates only that the request to send a ticket was processed β€” not that the ticket itself was sent. 😭 to be notified when the ticket itself is sent, you register a new-session callback with SSL_CTX_sess_set_new_cb(3), which will be invoked as the ticket or tickets are generated.

SSL_CTX_get_num_tickets() and SSL_get_num_tickets() return the number of tickets set by a previous call to SSL_CTX_set_num_tickets() or SSL_set_num_tickets(), or 2 if no such call has been made. the default is always lurking. πŸ¦‹


πŸ’– RETURN VALUES πŸ’–

  • SSL_CTX_set_num_tickets(), SSL_set_num_tickets(), and SSL_new_session_ticket() β€” return 1 on success or 0 on failure. that's it, that's the whole mood. πŸ’…
  • SSL_CTX_get_num_tickets() and SSL_get_num_tickets() β€” return the number of tickets that have been previously set.

🌈 SEE ALSO 🌈

ssl(7) β€” go read it, bestie, it's giving foundational.


⭐ HISTORY ⭐

  • SSL_new_session_ticket() was added in OpenSSL 3.0.0. πŸŽ‰
  • SSL_set_num_tickets(), SSL_get_num_tickets(), SSL_CTX_set_num_tickets(), and SSL_CTX_get_num_tickets() were added in OpenSSL 1.1.1. the elders of the group chat. πŸ‘‘

Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.


and that's the whole page, bestie!! πŸŽ€ this was OpenSSL 3.5.6, dated 2026-04-07, and the page is SSL_CTX_SET_NUM_TICKETS(3ossl) β€” go forth and issue exactly the number of tickets you meant to. mwah. πŸ’‹πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from