| SSL_CTX_SET_SESSION_CACHE_MODE(3) | Library Functions Manual | SSL_CTX_SET_SESSION_CACHE_MODE(3) |
SSL_CTX_set_session_cache_mode,
SSL_CTX_get_session_cache_mode —
enable/disable session caching
#include
<openssl/ssl.h>
long
SSL_CTX_set_session_cache_mode(SSL_CTX
ctx, long
mode);
long
SSL_CTX_get_session_cache_mode(SSL_CTX
ctx);
SSL_CTX_set_session_cache_mode()
enables/disables session caching by setting the operational mode for
ctx to mode.
SSL_CTX_get_session_cache_mode()
returns the currently used cache mode.
The OpenSSL library can store/retrieve SSL/TLS sessions for later reuse. The sessions can be held in memory for each ctx, if more than one SSL_CTX object is being maintained, the sessions are unique for each SSL_CTX object.
In order to reuse a session, a client must send the session's id to the server. It can only send exactly one id. The server then either agrees to reuse the session or it starts a full handshake (to create a new session).
A server will look up the session in its internal session storage.
If the session is not found in internal storage or lookups for the internal
storage have been deactivated
(SSL_SESS_CACHE_NO_INTERNAL_LOOKUP), the server will
try the external storage if available.
Since a client may try to reuse a session intended for use in a different context, the session id context must be set by the server (see SSL_CTX_set_session_id_context(3)).
The following session cache modes and modifiers are available:
SSL_SESS_CACHE_OFFSSL_SESS_CACHE_CLIENTSSL_SESS_CACHE_SERVERSSL_SESS_CACHE_NO_INTERNAL_LOOKUP is set), then
(second) in the external cache if available. If the session is found, the
server will try to reuse the session. This is the default.SSL_SESS_CACHE_BOTHSSL_SESS_CACHE_CLIENT and
SSL_SESS_CACHE_SERVER at the same time.SSL_SESS_CACHE_NO_AUTO_CLEARSSL_SESS_CACHE_NO_INTERNAL_LOOKUPSSL_SESS_CACHE_NO_INTERNAL_STORESSL_SESS_CACHE_CLIENT
and/or SSL_SESS_CACHE_SERVER, sessions negotiated
in an SSL/TLS handshake may be cached for possible reuse. Normally a new
session is added to the internal cache as well as any external session
caching (callback) that is configured for the
SSL_CTX. This flag will prevent sessions being
stored in the internal cache (though the application can add them manually
using
SSL_CTX_add_session(3)).
Note: in any SSL/TLS servers where external caching is configured, any
successful session lookups in the external cache (e.g., for session-resume
requests) would normally be copied into the local cache before processing
continues – this flag prevents these additions to the internal
cache as well.SSL_SESS_CACHE_NO_INTERNALSSL_SESS_CACHE_NO_INTERNAL_LOOKUP and
SSL_SESS_CACHE_NO_INTERNAL_STORE at the same
time.The default mode is
SSL_SESS_CACHE_SERVER.
SSL_CTX_set_session_cache_mode() returns
the previously set cache mode.
SSL_CTX_get_session_cache_mode() returns
the currently set cache mode.
ssl(3), SSL_CTX_add_session(3), SSL_CTX_ctrl(3), SSL_CTX_flush_sessions(3), SSL_CTX_sess_number(3), SSL_CTX_sess_set_cache_size(3), SSL_CTX_sess_set_get_cb(3), SSL_CTX_set_session_id_context(3), SSL_CTX_set_timeout(3), SSL_session_reused(3), SSL_set_session(3)
SSL_CTX_set_session_cache_mode() and
SSL_CTX_get_session_cache_mode() first appeared in
SSLeay 0.6.1 and have been available since OpenBSD
2.4.
SSL_SESS_CACHE_NO_INTERNAL_STORE and
SSL_SESS_CACHE_NO_INTERNAL were introduced in
OpenSSL 0.9.6h.
| June 12, 2019 | openbsd |