Do not cache sessions with zero sid_ctx_length when SSL_VERIFY_PEER
authorBenjamin Kaduk <bkaduk@akamai.com>
Fri, 26 Jan 2018 17:16:21 +0000 (11:16 -0600)
committerBen Kaduk <kaduk@mit.edu>
Wed, 21 Mar 2018 00:36:00 +0000 (19:36 -0500)
commit8e4057768586961942851d89287f43969352127a
tree5b550b9ec91d157890e2feae6ce411b604a98f6a
parentb9b5e7144af84dd9b66d31ed6d009b40c5bcd514
Do not cache sessions with zero sid_ctx_length when SSL_VERIFY_PEER

The sid_ctx is something of a "certificate request context" or a
"session ID context" -- something from the application that gives
extra indication of what sort of thing this session is/was for/from.
Without a sid_ctx, we only know that there is a session that we
issued, but it could have come from a number of things, especially
with an external (shared) session cache.  Accordingly, when resuming,
we will hard-error the handshake when presented with a session with
zero-length sid_ctx and SSL_VERIFY_PEER is set -- we simply have no
information about the peer to verify, so the verification must fail.

In order to prevent these future handshake failures, proactively
decline to add the problematic sessions to the session cache.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5175)

(cherry picked from commit d316cdcf6d8d6934663278145fe0a8191e14a8c5)
ssl/ssl_lib.c