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

Question around dropping support for OpenSSL < 3 #56733

Description

@jasnell

Wanted to see if we can get an idea of when we can expect to be able to drop the requirement to support OpenSSL versions before 3.

/cc @nodejs/security @nodejs/crypto

Activity

  1. panva commented on Jan 23, 2025

    @panva
    Member

    @jasnell my opinion is we should not drop support for it so long as OpenSSL 1.1.1 extended support is available, especially given the performance regressions of 3.x

  2. jasnell commented on Jan 23, 2025

    @jasnell
    MemberAuthor

    ... so long as OpenSSL 1.1.1 extended support is available

    Any estimations on when that will be? I've seen conflicting information on it.

  3. panva commented on Jan 23, 2025

    @panva
    Member

    Any estimations on when that will be? I've seen conflicting information on it.

    🤷‍♂ Hopefully not soon though, 1.1.1 performance is that good compared to 3.x

  4. bnoordhuis commented on Jan 23, 2025

    @bnoordhuis
    Member

    Any estimations on when that will be?

    "as long as it remains commercially viable to do so" - from here.

    IMO, there's no good reason to keep support for openssl 1.1. That's doing free work for the big enterprises that pay openssl $175k/yr for their extended support plan.

  5. richardlau commented on Jan 31, 2025

    @richardlau
    Member

    Dropping support for OpenSSL 1.1.1 will affect downstream rebuilders of Node.js such as Linux distributions.
    For example, both Red Hat Enterprise Linux 8 and Ubuntu 20.04 are widely used OpenSSL 1.1.1-based distributions.

  6. mcollina commented on Feb 1, 2025

    @mcollina
    SponsorMember

    What does supporting OpenSSL v1.1.1 entails? It went EOL in 2023, so I'm actually +1 in dropping support for it.

    Dropping this would impact our OS support matrix?

  7. panva commented on Feb 1, 2025

    @panva
    Member

    What does supporting OpenSSL v1.1.1 entails? It went EOL in 2023, so I'm actually +1 in dropping support for it.

    Extended support is still available and I imagine the Linux distros that @richardlau speaks of use the extended support versions.

    As I've responded prior, I am not in favour of removing support for 1.1.1 so long as that support is still available and used in linux distributions.

  8. jasnell commented on Feb 1, 2025

    @jasnell
    MemberAuthor

    I understand the motivation for keeping it, especially with how rocky the 3.x line was coming out of the gate, but that "so long as that support is still available and used" could be a very long time and the fact that 3.x and beyond will only keep expanding the number of breaking API changes is only going to make our ability to support the full spectrum of options more difficult. The fact that there are places where we also have to support boringssl along with fips for both makes it even more cumbersome. I think there's likely some compromise along the spectrum between Dropping It Now and Keeping It Indefinitely that would we could find.

  9. jasnell commented on Mar 3, 2025

    @jasnell
    MemberAuthor

    What I'd like to propose is this:

    1. Deprecate 1.1.1 support in main after 24.0.0 is cut.
    2. EOL 1.1.1 support (that is, remove 1.1.1) immediately 25.0.0 is cut.

    This would mean that 24.x and 25.x would continue to have 1.1.1 support included, however, 26.x-dev and 26+ would baseline on OpenSSL 3.x moving forward.

  10. joyeecheung commented on Mar 4, 2025

    @joyeecheung
    Member

    Maybe a middle ground can be, that we keep the 1.1.1 build at least buildable and when we use APIs that are only available to 3.x we put it behind macros or throw an error (we may need a new configure option for this to signify "lowest version of OpenSSL this can dynamically link to"), so that not all features are supported with 1.1.1 but at least most still works?

  11. panva commented on Mar 4, 2025

    @panva
    Member

    Maybe a middle ground can be, that we keep the 1.1.1 build at least buildable and when we use APIs that are only available to 3.x we put it behind macros or throw an error (we may need a new configure option for this to signify "lowest version of OpenSSL this can dynamically link to"), so that not all features are supported with 1.1.1 but at least most still works?

    I assumed this to be the way we'd take even if we started adding e.g. pqc algorithms only available in later OpenSSL 3.x versions today.

  12. jasnell commented on Mar 4, 2025

    @jasnell
    MemberAuthor

    Maybe a middle ground can be, that we keep the 1.1.1 build at least buildable and when we use APIs that are only available to 3.x we put it behind macros or throw an error (we may need a new configure option for this to signify "lowest version of OpenSSL this can dynamically link to"), so that not all features are supported with 1.1.1 but at least most still works?

    I'm not quite sure how this is different than current status quo? We already use ifdef blocks to mark off stuff that only compiles in 3.x. The goal here would be to simplify our code by being able to remove the blocks for 1.1.1.

  13. joyeecheung commented on Mar 4, 2025

    @joyeecheung
    Member

    The difference would be, when OPENSSL_VERSION_MAJOR >= 3 is false, we would just throw an error or abort in the branch, instead of trying to make it work with OpenSSL 1.1.1 APIs, like what we currently do. If someone is willing to fill in the else branch, there isn't a strong reason to reject. But for others, this removes the burden for having to implement the else branch.

  14. jasnell commented on Mar 4, 2025

    @jasnell
    MemberAuthor

    That approach likely works in the interim. Long term we do need to identify a path and timeline to moving entirely off 1.1.1 and I'd still like us to figure that path out.

  15. targos commented on Mar 4, 2025

    @targos
    Member

    There's something I don't understand, and maybe it's a good opportunity to talk about it.
    It seems that developers are "ok" being stuck on non-latest OS (e.g. RHEL 8), essential libraries (e.g. OpenSSL 1.1.1), but they expect to always be able to run the most recent version of Node.js with these, putting pressure on us to do voluntary work to support them.
    Why is it so difficult for us to say "stop" (if you want the latest node, use the latest RHEL).

  16. 4 remaining items

  17. panva commented on Mar 4, 2025

    @panva
    Member

    Seems that I'm the only one here, I can live with 1.1.1 support dying with the 22.x LTS EOL, that would however mean adding the deprecation in 23.x and removing it on main before 24.x is cut.

  18. mhdawson commented on Mar 4, 2025

    @mhdawson
    Member

    I don't think removing 1.1.1 so close to 24.x being cut is reasonable. Jame's proposal seems a better balance.

  19. anonrig commented on Mar 4, 2025

    @anonrig
    Member

    ... Anyone here really thinks that's an awesome idea?

    Nope. I'd prefer a much more aggressive approach but trying to find a compromise.

    I am interested in finding an aggressive approach as well. I think we should remove 1.x version and make it semver-major and release it with 24

  20. jasnell commented on Mar 5, 2025

    @jasnell
    MemberAuthor

    Sadly I think @mhdawson is correct. Removing 1.1.1 this close to 24.0.0 being cut makes me nervous and we do need to telegraph the change sufficiently in advance.

  21. mcollina commented on Mar 8, 2025

    @mcollina
    SponsorMember

    I think dropping 1.1.1 is 100% fine in v24. Long term this would end up being problematic.

  22. panva commented on Jun 5, 2025

    @panva
    Member

    @jasnell how can we align removing support for OpenSSL < 3.0 with continuing to allow use of BoringSSL for embedders such as Electron?

  23. github-actions commented on Apr 22, 2026

    @github-actions
  24. added
    staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.
    on Apr 22, 2026
  25. added
    never-staleIssues and PRs exempt from automated stale handling.
    and removed
    staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.
    on Apr 22, 2026
  26. panva commented on May 12, 2026

    @panva
    Member

    So where are we with OpenSSL 1.x support? The conversation in #56733 was approaching whether to withdraw this for v24.x, whereas we appear to be upping our integration a year later?

    Originally posted by @Renegade334 in #62862 (comment)


    @Renegade334 Up until someone goes through the inventory of OpenSSL 1.1 deprecated APIs that we could drop in favour of modern 3.x ones and matches them against what BoringSSL supports I think this isn't going anywhere anytime soon.

    In the meantime we're keeping the lights on so to speak. We're also not upping the integration, full CI has had 1.1.1 and 1.1.1 fips link job since i remember and what we did was add 1.1.1 non-fips to GHA as well, that's merely a convenience so that 1.1.1 compat issues aren't something you discover late in a PRs process. Same with BoringSSL, it is now in GHA and it was previously missing completely.

    Our hand could be forced if one of two things happens

    • OpenSSL actually removes the deprecated APIs we use that give us Boring/1.1.1 support
    • OpenSSL stops their extended support of 1.1.1

    Come to think of it those two probably go hand in hand from OpenSSL's perspective.

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

    never-staleIssues and PRs exempt from automated stale handling.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions