镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

Removing newSession/resumeSession #1462

Description

@indutny

SSL session ids are so outdated, let's remove them. TLS tickets is a modern age and they are very widely deployed!

I'd like to remove it to get rid of the ClientHelloParser. SSL_set_cert_cb is a new OpenSSL-1.0.2 API that we are going to use instead.

The list of the modules that will no longer work:

Please comment if you have a use case for this API, or know a module that does depend on it.

cc @iojs/collaborators @iojs/community-members @iojs/crypto

Activity

  1. added
    semver-majorPRs that contain breaking changes and should be released in the next major version.
    on Apr 18, 2015
  2. silverwind commented on Apr 18, 2015

    @silverwind
    Contributor

    I'm using id resumption, but meant to switch over to tickets eventually.

    Could you provide a bit of info on where the ticket keys are stored and if there is a user-exposed API to manage the invalidation? I think if we want to do the switch to tickets, the user should have control over this important aspect.

    Also, how is the client support on tickets? Such data seems hard to find. Does IE support them yet?

  3. added
    tlsIssues and PRs related to the tls subsystem.
    on Apr 18, 2015
  4. indutny commented on Apr 18, 2015

    @indutny
    MemberAuthor

    @silverwind tickets are stored on client-side, the client should provide them when attempting to do a new connection. There is a validity timeout, but it is not configurable in io.js yet. Please file a bug for it ;)

    The client-side session API in io.js remains the same even when using TLS tickets. You could call .getSession() and supply it as a session option to the tls.connect().

  5. silverwind commented on Apr 18, 2015

    @silverwind
    Contributor

    But the server uses a key to encrypt the ticket, and I think best practice dictates this key to be rotated, no?

  6. indutny commented on Apr 18, 2015

    @indutny
    MemberAuthor

    @silverwind that's true. We do not provide the API to change the the ticket key in runtime.

    Speaking of, I just figured that sessionTimeout controls TLS ticket lifetime, but it is only an advisory. So technically the TLS tickets are valid until the key is rotated.

  7. silverwind commented on Apr 18, 2015

    @silverwind
    Contributor

    On the server, I could see forcing a ticket key refresh by instantiating a new server with a provided ticketKeys (The docs to that option seem confusing, it's called keys but says it only takes a single key). I think there should probably be a better api to this.

  8. indutny commented on Apr 18, 2015

    @indutny
    MemberAuthor

    @silverwind well, this is some OpenSSL weirdness :) It takes one buffer and splits it into 3 parts, each used for a different kind of key for TLS tickets. That's why it is called that way.

    There is an API for changing it in runtime. I'd really appreciate if you'll open a ticket for it and mention me there.

  9. silverwind commented on Apr 18, 2015

    @silverwind
    Contributor

    Will do.

    My primary concern is we're deprecating a important performance functionality to which there is no universally supported alternative to. Could you provide some data on browser support?

  10. indutny commented on Apr 18, 2015

    @indutny
    MemberAuthor

    I think @pquerna has some insights on this: https://journal.paul.querna.org/articles/2012/09/07/adoption-of-tls-extensions/ . Though the situation might have been changed much since 2012 ;)

    I believe that chrome/firefox/opera/... support this, while old IE versions most likely do not. The command line utilities do not support TLS tickets in their majority, but!.. they do not support sessions either :)

  11. indutny commented on Apr 18, 2015

    @indutny
    MemberAuthor

    @silverwind to conclude, I believe that in most situations if the client support the SSL session, it support TLS session tickets too.

  12. 13 remaining items

  13. Trott commented on Feb 25, 2016

    @Trott
    Member

    Hello, friends! Can someone tell me if this is still a thing?

    (Doing some poking around on issues that haven't been touched in a long time and trying to figure out what, if anything, to do with them. This one hasn't seen any comments in over 10 months.)

  14. indutny commented on Feb 25, 2016

    @indutny
    MemberAuthor

    This is still a thing, and I firmly believe that we should eventually do this. There are lots of code that supports it, and it doesn't provide that much use in the presence of TLS session tickets (which are very common nowadays).

    To support @tlivings case, I think it should be enough to leave a synchronous version of newSession/resumeSession as a compatibility shim.

  15. indutny commented on Mar 15, 2016

    @indutny
    MemberAuthor

    Alright, I just spoke to @tlivings, and it looks like we will be able to figure it out with a synchronous newSession/resumeSession. Going to file a PR with proposed changes soon.

  16. justinegreene commented on Mar 30, 2016

    @justinegreene

    I am a little late to this thread, but unless I am missing something, I am pretty sure that Safari on iOS and OSX lacks Session Ticket Support and only supports Session IDs, so removing new Session and Resume Session functionality would cripple SSL/TLS for iPhones and iPads which account for 40%-60% of the mobile web traffic in the US (and Safari on OS X which is about 3%).

  17. indutny commented on Mar 30, 2016

    @indutny
    MemberAuthor

    @justinegreene I'm not suggesting removal of support of session ids... just asynchronous APIs for loading/storing them.

  18. justinegreene commented on Mar 30, 2016

    @justinegreene

    Thanks for the clarification. The thread started with "SSL session ids are so outdated, let's remove them" and much of the discussion was about using Session Tickets instead of Session IDs, but this isn't an option with Safari.

  19. bnoordhuis commented on Feb 7, 2017

    @bnoordhuis
    Member

    @indutny What's the status of this? If it's inactive, can you close it out?

  20. silverwind commented on Feb 7, 2017

    @silverwind
    Contributor

    BTW, Safari 10 still does not support session tickets according to https://www.ssllabs.com/ssltest/clients.html.

  21. added
    stalledIssues and PRs manually marked as stalled and scheduled for automatic closure.
    on Mar 24, 2017
  22. jasnell commented on May 30, 2017

    @jasnell
    Member

    Closing due to lack of further activity. @indutny feel free to reopen if you get back to this.

  23. added a commit that references this issue on Oct 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussIssues opened for discussion and feedback.semver-majorPRs that contain breaking changes and should be released in the next major version.stalledIssues and PRs manually marked as stalled and scheduled for automatic closure.tlsIssues and PRs related to the tls subsystem.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions