1 | =pod
|
---|
2 |
|
---|
3 | =head1 NAME
|
---|
4 |
|
---|
5 | SSL_set_num_tickets,
|
---|
6 | SSL_get_num_tickets,
|
---|
7 | SSL_CTX_set_num_tickets,
|
---|
8 | SSL_CTX_get_num_tickets,
|
---|
9 | SSL_new_session_ticket
|
---|
10 | - control the number of TLSv1.3 session tickets that are issued
|
---|
11 |
|
---|
12 | =head1 SYNOPSIS
|
---|
13 |
|
---|
14 | #include <openssl/ssl.h>
|
---|
15 |
|
---|
16 | int SSL_set_num_tickets(SSL *s, size_t num_tickets);
|
---|
17 | size_t SSL_get_num_tickets(const SSL *s);
|
---|
18 | int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets);
|
---|
19 | size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx);
|
---|
20 | int SSL_new_session_ticket(SSL *s);
|
---|
21 |
|
---|
22 | =head1 DESCRIPTION
|
---|
23 |
|
---|
24 | SSL_CTX_set_num_tickets() and SSL_set_num_tickets() can be called for a server
|
---|
25 | application and set the number of TLSv1.3 session tickets that will be sent to
|
---|
26 | the client after a full handshake. Set the desired value (which could be 0) in
|
---|
27 | the B<num_tickets> argument. Typically these functions should be called before
|
---|
28 | the start of the handshake.
|
---|
29 |
|
---|
30 | The default number of tickets is 2. Following a resumption the number of tickets
|
---|
31 | issued will never be more than 1 regardless of the value set via
|
---|
32 | SSL_set_num_tickets() or SSL_CTX_set_num_tickets(). If B<num_tickets> is set to
|
---|
33 | 0 then no tickets will be issued for either a normal connection or a resumption.
|
---|
34 |
|
---|
35 | Tickets are also issued on receipt of a post-handshake certificate from the
|
---|
36 | client following a request by the server using
|
---|
37 | L<SSL_verify_client_post_handshake(3)>. These new tickets will be associated
|
---|
38 | with the updated client identity (i.e. including their certificate and
|
---|
39 | verification status). The number of tickets issued will normally be the same as
|
---|
40 | was used for the initial handshake. If the initial handshake was a full
|
---|
41 | handshake then SSL_set_num_tickets() can be called again prior to calling
|
---|
42 | SSL_verify_client_post_handshake() to update the number of tickets that will be
|
---|
43 | sent.
|
---|
44 |
|
---|
45 | To issue tickets after other events (such as application-layer changes),
|
---|
46 | SSL_new_session_ticket() is used by a server application to request that a new
|
---|
47 | ticket be sent when it is safe to do so. New tickets are only allowed to be
|
---|
48 | sent in this manner after the initial handshake has completed, and only for
|
---|
49 | TLS 1.3 connections. By default, the ticket generation and transmission are
|
---|
50 | delayed until the server is starting a new write operation, so that it is
|
---|
51 | bundled with other application data being written and properly aligned to a
|
---|
52 | record boundary. If the connection was at a record boundary when
|
---|
53 | SSL_new_session_ticket() was called, the ticket can be sent immediately
|
---|
54 | (without waiting for the next application write) by calling
|
---|
55 | SSL_do_handshake(). SSL_new_session_ticket() can be called more than once to
|
---|
56 | request additional tickets be sent; all such requests are queued and written
|
---|
57 | together when it is safe to do so and triggered by SSL_write() or
|
---|
58 | SSL_do_handshake(). Note that a successful return from
|
---|
59 | SSL_new_session_ticket() indicates only that the request to send a ticket was
|
---|
60 | processed, not that the ticket itself was sent. To be notified when the
|
---|
61 | ticket itself is sent, a new-session callback can be registered with
|
---|
62 | L<SSL_CTX_sess_set_new_cb(3)> that will be invoked as the ticket or tickets
|
---|
63 | are generated.
|
---|
64 |
|
---|
65 | SSL_CTX_get_num_tickets() and SSL_get_num_tickets() return the number of
|
---|
66 | tickets set by a previous call to SSL_CTX_set_num_tickets() or
|
---|
67 | SSL_set_num_tickets(), or 2 if no such call has been made.
|
---|
68 |
|
---|
69 | =head1 RETURN VALUES
|
---|
70 |
|
---|
71 | SSL_CTX_set_num_tickets(), SSL_set_num_tickets(), and
|
---|
72 | SSL_new_session_ticket() return 1 on success or 0 on failure.
|
---|
73 |
|
---|
74 | SSL_CTX_get_num_tickets() and SSL_get_num_tickets() return the number of tickets
|
---|
75 | that have been previously set.
|
---|
76 |
|
---|
77 | =head1 SEE ALSO
|
---|
78 |
|
---|
79 | L<ssl(7)>
|
---|
80 |
|
---|
81 | =head1 HISTORY
|
---|
82 |
|
---|
83 | SSL_new_session_ticket() was added in OpenSSL 3.0.0.
|
---|
84 | SSL_set_num_tickets(), SSL_get_num_tickets(), SSL_CTX_set_num_tickets(), and
|
---|
85 | SSL_CTX_get_num_tickets() were added in OpenSSL 1.1.1.
|
---|
86 |
|
---|
87 | =head1 COPYRIGHT
|
---|
88 |
|
---|
89 | Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved.
|
---|
90 |
|
---|
91 | Licensed under the Apache License 2.0 (the "License"). You may not use
|
---|
92 | this file except in compliance with the License. You can obtain a copy
|
---|
93 | in the file LICENSE in the source distribution or at
|
---|
94 | L<https://www.openssl.org/source/license.html>.
|
---|
95 |
|
---|
96 | =cut
|
---|