(linenum→info "unix/slp.c:2238")

openssl/0.9.8g/doc/ssl/SSL_CTX_set_session_cache_mode.pod

    1: =pod
    2: 
    3: =head1 NAME
    4: 
    5: SSL_CTX_set_session_cache_mode, SSL_CTX_get_session_cache_mode - enable/disable session caching
    6: 
    7: =head1 SYNOPSIS
    8: 
    9:  #include <openssl/ssl.h>
   10: 
   11:  long SSL_CTX_set_session_cache_mode(SSL_CTX ctx, long mode);
   12:  long SSL_CTX_get_session_cache_mode(SSL_CTX ctx);
   13: 
   14: =head1 DESCRIPTION
   15: 
   16: SSL_CTX_set_session_cache_mode() enables/disables session caching
   17: by setting the operational mode for B<ctx> to <mode>.
   18: 
   19: SSL_CTX_get_session_cache_mode() returns the currently used cache mode.
   20: 
   21: =head1 NOTES
   22: 
   23: The OpenSSL library can store/retrieve SSL/TLS sessions for later reuse.
   24: The sessions can be held in memory for each B<ctx>, if more than one
   25: SSL_CTX object is being maintained, the sessions are unique for each SSL_CTX
   26: object.
   27: 
   28: In order to reuse a session, a client must send the session's id to the
   29: server. It can only send exactly one id.  The server then either 
   30: agrees to reuse the session or it starts a full handshake (to create a new
   31: session).
   32: 
   33: A server will lookup up the session in its internal session storage. If the
   34: session is not found in internal storage or lookups for the internal storage
   35: have been deactivated (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP), the server will try
   36: the external storage if available.
   37: 
   38: Since a client may try to reuse a session intended for use in a different
   39: context, the session id context must be set by the server (see
   40: L<SSL_CTX_set_session_id_context(3)|SSL_CTX_set_session_id_context(3)>).
   41: 
   42: The following session cache modes and modifiers are available:
   43: 
   44: =over 4
   45: 
   46: =item SSL_SESS_CACHE_OFF
   47: 
   48: No session caching for client or server takes place.
   49: 
   50: =item SSL_SESS_CACHE_CLIENT
   51: 
   52: Client sessions are added to the session cache. As there is no reliable way
   53: for the OpenSSL library to know whether a session should be reused or which
   54: session to choose (due to the abstract BIO layer the SSL engine does not
   55: have details about the connection), the application must select the session
   56: to be reused by using the L<SSL_set_session(3)|SSL_set_session(3)>
   57: function. This option is not activated by default.
   58: 
   59: =item SSL_SESS_CACHE_SERVER
   60: 
   61: Server sessions are added to the session cache. When a client proposes a
   62: session to be reused, the server looks for the corresponding session in (first)
   63: the internal session cache (unless SSL_SESS_CACHE_NO_INTERNAL_LOOKUP is set),
   64: then (second) in the external cache if available. If the session is found, the
   65: server will try to reuse the session.  This is the default.
   66: 
   67: =item SSL_SESS_CACHE_BOTH
   68: 
   69: Enable both SSL_SESS_CACHE_CLIENT and SSL_SESS_CACHE_SERVER at the same time.
   70: 
   71: =item SSL_SESS_CACHE_NO_AUTO_CLEAR
   72: 
   73: Normally the session cache is checked for expired sessions every
   74: 255 connections using the
   75: L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)> function. Since
   76: this may lead to a delay which cannot be controlled, the automatic
   77: flushing may be disabled and
   78: L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)> can be called
   79: explicitly by the application.
   80: 
   81: =item SSL_SESS_CACHE_NO_INTERNAL_LOOKUP
   82: 
   83: By setting this flag, session-resume operations in an SSL/TLS server will not
   84: automatically look up sessions in the internal cache, even if sessions are
   85: automatically stored there. If external session caching callbacks are in use,
   86: this flag guarantees that all lookups are directed to the external cache.
   87: As automatic lookup only applies for SSL/TLS servers, the flag has no effect on
   88: clients.
   89: 
   90: =item SSL_SESS_CACHE_NO_INTERNAL_STORE
   91: 
   92: Depending on the presence of SSL_SESS_CACHE_CLIENT and/or SSL_SESS_CACHE_SERVER,
   93: sessions negotiated in an SSL/TLS handshake may be cached for possible reuse.
   94: Normally a new session is added to the internal cache as well as any external
   95: session caching (callback) that is configured for the SSL_CTX. This flag will
   96: prevent sessions being stored in the internal cache (though the application can
   97: add them manually using L<SSL_CTX_add_session(3)|SSL_CTX_add_session(3)>). Note:
   98: in any SSL/TLS servers where external caching is configured, any successful
   99: session lookups in the external cache (ie. for session-resume requests) would
  100: normally be copied into the local cache before processing continues - this flag
  101: prevents these additions to the internal cache as well.
  102: 
  103: =item SSL_SESS_CACHE_NO_INTERNAL
  104: 
  105: Enable both SSL_SESS_CACHE_NO_INTERNAL_LOOKUP and
  106: SSL_SESS_CACHE_NO_INTERNAL_STORE at the same time.
  107: 
  108: 
  109: =back
  110: 
  111: The default mode is SSL_SESS_CACHE_SERVER.
  112: 
  113: =head1 RETURN VALUES
  114: 
  115: SSL_CTX_set_session_cache_mode() returns the previously set cache mode.
  116: 
  117: SSL_CTX_get_session_cache_mode() returns the currently set cache mode.
  118: 
  119: 
  120: =head1 SEE ALSO
  121: 
  122: L<ssl(3)|ssl(3)>, L<SSL_set_session(3)|SSL_set_session(3)>,
  123: L<SSL_session_reused(3)|SSL_session_reused(3)>,
  124: L<SSL_CTX_add_session(3)|SSL_CTX_add_session(3)>,
  125: L<SSL_CTX_sess_number(3)|SSL_CTX_sess_number(3)>,
  126: L<SSL_CTX_sess_set_cache_size(3)|SSL_CTX_sess_set_cache_size(3)>,
  127: L<SSL_CTX_sess_set_get_cb(3)|SSL_CTX_sess_set_get_cb(3)>,
  128: L<SSL_CTX_set_session_id_context(3)|SSL_CTX_set_session_id_context(3)>,
  129: L<SSL_CTX_set_timeout(3)|SSL_CTX_set_timeout(3)>,
  130: L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)>
  131: 
  132: =head1 HISTORY
  133: 
  134: SSL_SESS_CACHE_NO_INTERNAL_STORE and SSL_SESS_CACHE_NO_INTERNAL
  135: were introduced in OpenSSL 0.9.6h.
  136: 
  137: =cut
Syntax (Markdown)