1. 25 1月, 2018 1 次提交
  2. 09 1月, 2018 1 次提交
  3. 03 1月, 2018 1 次提交
    • B
      Permit the "supported_groups" extension in ServerHellos · 7bc2bddb
      Benjamin Kaduk 提交于
      Although this is forbidden by all three(!) relevant specifications,
      there seem to be multiple server implementations in the wild that
      send it.  Since we didn't check for unexpected extensions in any
      given message type until TLS 1.3 support was added, our previous
      behavior was to silently accept these extensions and pass them over
      to the custom extension callback (if any).  In order to avoid
      regression of functionality, relax the check for "extension in
      unexpected context" for this specific case, but leave the protocol
      enforcment mechanism unchanged for other extensions and in other
      extension contexts.
      
      Leave a detailed comment to indicate what is going on.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/4463)
      7bc2bddb
  4. 18 12月, 2017 1 次提交
  5. 14 12月, 2017 3 次提交
  6. 04 12月, 2017 3 次提交
  7. 22 11月, 2017 1 次提交
  8. 06 11月, 2017 1 次提交
  9. 30 10月, 2017 1 次提交
    • B
      Provide SSL_CTX.stats.sess_accept for switched ctxs · 3be08e30
      Benjamin Kaduk 提交于
      We currently increment the SSL_CTX stats.sess_accept field in
      tls_setup_handshake(), which is invoked from the state machine well
      before ClientHello processing would have had a chance to switch
      the SSL_CTX attached to the SSL object due to a provided SNI value.
      However, stats.sess_accept_good is incremented in tls_finish_handshake(),
      and uses the s->ctx.stats field (i.e., the new SSL_CTX that was switched
      to as a result of SNI processing).  This leads to the confusing
      (nonsensical) situation where stats.sess_accept_good is larger than
      stats.sess_accept, as the "sess_accept" value was counted on the
      s->session_ctx.
      
      In order to provide some more useful numbers, increment
      s->ctx.stats.sess_accept after SNI processing if the SNI processing
      changed s->ctx to differ from s->session_ctx.  To preserve the
      property that any given accept is counted only once, make the
      corresponding decrement to s->session_ctx.stats.sess_accept when
      doing so.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NPaul Dale <paul.dale@oracle.com>
      (Merged from https://github.com/openssl/openssl/pull/4549)
      3be08e30
  10. 16 10月, 2017 1 次提交
    • M
      Don't do version neg on an HRR · a2b97bdf
      Matt Caswell 提交于
      Previously if a client received an HRR then we would do version negotiation
      immediately - because we know we are going to get TLSv1.3. However this
      causes a problem when we emit the 2nd ClientHello because we start changing
      a whole load of stuff to ommit things that aren't relevant for < TLSv1.3.
      The spec requires that the 2nd ClientHello is the same except for changes
      required from the HRR. Therefore the simplest thing to do is to defer the
      version negotiation until we receive the ServerHello.
      
      Fixes #4292
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      Reviewed-by: NBen Kaduk <kaduk@mit.edu>
      (Merged from https://github.com/openssl/openssl/pull/4527)
      a2b97bdf
  11. 12 10月, 2017 1 次提交
  12. 06 10月, 2017 2 次提交
  13. 04 10月, 2017 1 次提交
    • T
      Session resume broken switching contexts · a84e5c9a
      Todd Short 提交于
      When an SSL's context is swtiched from a ticket-enabled context to
      a ticket-disabled context in the servername callback, no session-id
      is generated, so the session can't be resumed.
      
      If a servername callback changes the SSL_OP_NO_TICKET option, check
      to see if it's changed to disable, and whether a session ticket is
      expected (i.e. the client indicated ticket support and the SSL had
      tickets enabled at the time), and whether we already have a previous
      session (i.e. s->hit is set).
      
      In this case, clear the ticket-expected flag, remove any ticket data
      and generate a session-id in the session.
      
      If the SSL hit (resumed) and switched to a ticket-disabled context,
      assume that the resumption was via session-id, and don't bother to
      update the session.
      
      Before this fix, the updated unit-tests in 06-sni-ticket.conf would
      fail test #4 (server1 = SNI, server2 = no SNI).
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NPaul Dale <paul.dale@oracle.com>
      (Merged from https://github.com/openssl/openssl/pull/1529)
      a84e5c9a
  14. 26 9月, 2017 1 次提交
  15. 23 9月, 2017 1 次提交
  16. 07 9月, 2017 1 次提交
    • B
      Restore historical behavior for absent ServerHello extensions · 1c259bb5
      Benjamin Kaduk 提交于
      In OpenSSL 1.1.0, when there were no extensions added to the ServerHello,
      we did not write the extension data length bytes to the end of the
      ServerHello; this is needed for compatibility with old client implementations
      that do not support TLS extensions (such as the default configuration of
      OpenSSL 0.9.8).  When ServerHello extension construction was converted
      to the new extensions framework in commit
      7da160b0, this behavior was inadvertently
      limited to cases when SSLv3 was negotiated (and similarly for ClientHellos),
      presumably since extensions are not defined at all for SSLv3.  However,
      extensions for TLS prior to TLS 1.3 have been defined in separate
      RFCs (6066, 4366, and 3546) from the TLS protocol specifications, and as such
      should be considered an optional protocol feature in those cases.
      
      Accordingly, be conservative in what we send, and skip the extensions block
      when there are no extensions to be sent, regardless of the TLS/SSL version.
      (TLS 1.3 requires extensions and can safely be treated differently.)
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NPaul Dale <paul.dale@oracle.com>
      (Merged from https://github.com/openssl/openssl/pull/4296)
      1c259bb5
  17. 31 8月, 2017 3 次提交
  18. 30 8月, 2017 1 次提交
  19. 18 8月, 2017 1 次提交
  20. 15 8月, 2017 1 次提交
    • B
      Move ALPN handling from finalizer to delayed call · 5626f634
      Benjamin Kaduk 提交于
      Commit 02f0274e moved ALPN processing
      into an extension finalization function, as the only documented ordering
      requirement from previous commits was that ALPN processing occur after
      SNI processing, and SNI processing is performed before the extension
      finalization step.  However, it is useful for applications'
      alpn_select callbacks to run after ciphersuite selection as well -- at
      least one application protocol specification (HTTP/2) imposes restrictions
      on which ciphersuites are usable with that protocol.  Since it is generally
      more preferrable to have a successful TLS connection with a default application
      protocol than to fail the TLS connection and not be able to have the preferred
      application protocol, it is good to give the alpn_select callback information
      about the ciphersuite to be used, so that appropriate restrctions can be
      enforced in application code.
      
      Accordingly, split the ALPN handling out into a separate tls_handl_alpn()
      function akin to tls_handle_status_request(), called from
      tls_post_process_client_hello().  This is an alternative to resuscitating
      ssl_check_clienthello_tlsext_late(), something of an awkwward name itself.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/4070)
      5626f634
  21. 11 8月, 2017 1 次提交
  22. 01 8月, 2017 1 次提交
  23. 18 7月, 2017 1 次提交
  24. 07 7月, 2017 2 次提交
  25. 21 6月, 2017 2 次提交
  26. 12 6月, 2017 1 次提交
  27. 10 6月, 2017 1 次提交
  28. 19 5月, 2017 1 次提交
    • M
      Try to be more consistent about the alerts we send · fb34a0f4
      Matt Caswell 提交于
      We are quite inconsistent about which alerts get sent. Specifically, these
      alerts should be used (normally) in the following circumstances:
      
      SSL_AD_DECODE_ERROR = The peer sent a syntactically incorrect message
      SSL_AD_ILLEGAL_PARAMETER = The peer sent a message which was syntactically
      correct, but a parameter given is invalid for the context
      SSL_AD_HANDSHAKE_FAILURE = The peer's messages were syntactically and
      semantically correct, but the parameters provided were unacceptable to us
      (e.g. because we do not support the requested parameters)
      SSL_AD_INTERNAL_ERROR = We messed up (e.g. malloc failure)
      
      The standards themselves aren't always consistent but I think the above
      represents the best interpretation.
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/3480)
      fb34a0f4
  29. 17 5月, 2017 3 次提交