GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Use OpenSSL 3.0.x in our binary builds · Issue #99079 · python/cpython

Use OpenSSL 3.0.x in our binary builds #99079

New issue
Copy link
New issue
Copy link
Closed
Closed
Use OpenSSL 3.0.x in our binary builds#99079
Copy link
Assignees
ambv
Labels
3.12only security fixesonly security fixesrelease-blockertype-featureA feature request or enhancementA feature request or enhancement

Description

@gpshead
gpshead
opened on Nov 3, 2022
Issue body actions

Feature or enhancement

We currently use OpenSSL 1.1.1 series in our Windows and macOS binary builds.

Per https://www.openssl.org/source/, that is only supported through September of 2023.

Thus we need to switch to a supported version of OpenSSL before 3.12 is released. (And likely consider moving 3.11 to use it if deemed feasible)

There are a pile of bugs related to OpenSSL 3 that may or may not be blockers:

  • Windows support for OpenSSL 3.0 #90728
  • python 3.11 test_ssl failure with OpenSSL 3.0 on Windows #101401
  • FIPS usedforsecurity flag is no longer functional with OpenSSL 3.0.0 #90307
  • ssl module with OpenSSL 3.0 does not throw SSLEOFError on unclean shutdown #95494
  • ... edit this list to link to others ...

We have a longer term desire to not be so beholden to OpenSSL at all. But this issue is being filed as a practical response to untangling that not being likely feasible before 3.12beta1.

Linked PRs

  • gh-99079: Update Windows build to use OpenSSL 3.0.9 #106649
  • [3.12] gh-99079: Update Windows build to use OpenSSL 3.0.9 (GH-106649) #106680
  • [3.11] gh-99079: Update Windows build to use OpenSSL 3.0.9 (GH-106649) #106761
  • [3.12] gh-99079: Update macOS installer to use OpenSSL 3.0.9. #107472
  • gh-99079: Update macOS installer to use OpenSSL 3.0.9. #107474
  • [3.11] gh-99079: Update macOS installer to use OpenSSL 3.0.9. #107476
  • [3.12] gh-99079: add What's New item #107481
  • [3.11] gh-99079: add What's New item #107482

Activity

Next
  1. gpshead
    added
    type-featureA feature request or enhancementA feature request or enhancement
    deferred-blocker
    3.12only security fixesonly security fixes
    on Nov 3, 2022
  2. ezio-melotti
    added this to Release and Deferred blockers 🚫on Nov 3, 2022
  3. ezio-melotti
    moved this to Todo in Release and Deferred blockers 🚫on Nov 3, 2022
  4. AlexWaygood
    added this to OpenSSL 3on Nov 3, 2022
  5. corona10 commented on Nov 6, 2022

    @corona10
    corona10
    on Nov 6, 2022
    Member
    More actions

    @gpshead Out of curiosity, Did we have any discussion about using boringSSL by vendoring them to the CPython repo?

  6. gpshead commented on Nov 11, 2022

    @gpshead
    gpshead
    on Nov 11, 2022
    MemberAuthor
    More actions

    Did we have any discussion about using boringSSL by vendoring them to the CPython repo?

    I'm not sure how well that would work out. boringSSL isn't really intended to be used by other projects, it doesn't guarantee a stable API. Even for security updates. And it lacks some interfaces and features.

    test_ssl.py needs significant modification to "pass" when linked with boringSSL and various pieces of the _ssl extension code need modifications as well as workarounds to disable unsupported features in some places. We carry patches on our Python runtime internally at Google that does some this, but they wouldn't be acceptable as is upstream as they disable features that need to work for global users and skip some tests rather than making them work. If we want to consider official boringSSL support in the CPython repo as well that should get tracked in another issue.

  7. corona10 commented on Nov 11, 2022

    @corona10
    corona10
    on Nov 11, 2022
    Member
    More actions

    it doesn't guarantee a stable AP

    Oh, I thought that we can manage the boringSSL as the vendored library likewise libexpat or mimalloc.

    We carry patches on our Python runtime internally at Google that does some this, but they wouldn't be acceptable as is upstream as they disable features that need to work for global users and skip some tests rather than making them work

    Oh got it..

    If we want to consider official boringSSL support in the CPython repo as well that should get tracked in another issue.

    Yeah and we also need to write PEP also if we try to do, but we may need to know the possibility of the porting boringSSL into our repository first.

  8. gpshead commented on Nov 11, 2022

    @gpshead
    gpshead
    on Nov 11, 2022
    MemberAuthor
    More actions

    it doesn't guarantee a stable AP

    Oh, I thought that we can manage the boringSSL as the vendored library likewise libexpat or mimalloc.

    We could and would if we did this. It's mostly noteworthy as a risk as it could involve some refactoring larger than we like to do within security fix releases several years down the line in order to pull in other updates.

  9. h-vetinari commented on Nov 29, 2022

    @h-vetinari
    h-vetinari
    on Nov 29, 2022
    Contributor
    More actions

    Did we have any discussion about using boringSSL by vendoring them to the CPython repo?

    Now on DPO!

    Moving away from OpenSSL completely has some large maintenance benefits (but IMO even larger downsides too).

    Moving to boringSSL sounds like a very bad proposition to my mind. OpenSSL is a heavy dependency, but it goes very far out of its way in terms of stability (which nowadays includes being buildable everywhere1), e.g. it promises:

    • No API or ABI breaking changes are allowed in a minor or patch release.
    • No existing public interface can be modified except where changes are unlikely to break source compatibility [...]
    • No existing public interface can be removed until its replacement has been in place in an LTS stable release. The original interface must also have been documented as deprecated for at least 5 years.

    I don't see sufficiently huge issues with OpenSSL (or sufficiently huge improvements with boringSSL) that a switch would look even remotely reasonable from my POV.

    Footnotes

    1. not least still being on C89 to support some ultra-exotic platforms without modern compilers ↩

  10. mzhao-dev commented on Jan 30, 2023

    @mzhao-dev
    mzhao-dev
    on Jan 30, 2023
    More actions

    I built python 3.11.1 with OPENSSL 3.0.7 on windows 10 platform, when I run test_ssl.py, it shows no OPENSSL_Applink, error and crashed.
    I confirmed that applink.c file was added and complied, so I have no idea about that issue. I think maybe need some other code change about that?

    #101401

  11. gpshead
    added
    release-blocker
    and removed
    deferred-blocker
    on Apr 27, 2023
  12. gpshead commented on Apr 27, 2023

    @gpshead
    gpshead
    on Apr 27, 2023
    MemberAuthor
    More actions

    Marking this as a release blocker again because we really should do this before beta1 so that people test against a relevant representation of what the next release will contain.

  13. 48 remaining items

  14. ned-deily
    added 7 commits that reference this issue on Jul 31, 2023

    [3.12] gh-99079: Update macOS installer to use OpenSSL 3.0.9. (gh-107472

    23655fc

    [3.11] pythongh-99079: Update macOS installer to use OpenSSL 3.0.9.

    39a6627

    gh-99079: Update macOS installer to use OpenSSL 3.0.9. (GH-107474)

    83e0976

    [3.11] gh-99079: Update macOS installer to use OpenSSL 3.0.9. (GH-107476

    b8beb07

    [3.12] pythongh-99079: add What's New item

    6877edf

    [3.12] gh-99079: add What's New item (GH-107481)

    f9f9bc9

    [3.11] gh-99079: add What's New item (GH-107482)

    ed5be95
  15. ned-deily commented on Jul 31, 2023

    @ned-deily
    ned-deily
    on Jul 31, 2023
    Member
    More actions

    I think we are done here: as of 3.12.0rc1 and 3.11.5, Windows builds and downloads from python.org for Windows and macOS should be using OpenSSL 3.0 (currently 3.0.9).

    Reacted by Erlend E. Aasland and Dmitriy Pertsev
  16. ned-deily
    closed this as completedon Jul 31, 2023
  17. github-project-automation
    moved this from Todo to Done in Release and Deferred blockers 🚫on Jul 31, 2023
  18. github-project-automation
    moved this to Done in OpenSSL 3on Jul 31, 2023
  19. lennin-cp commented on Aug 25, 2023

    @lennin-cp
    lennin-cp
    on Aug 25, 2023
    More actions

    What's the plan to update OpenSSL in supported versions 3.8, 3.9, and 3.10?

  20. zware commented on Aug 26, 2023

    @zware
    zware
    on Aug 26, 2023
    Member
    More actions

    What's the plan to update OpenSSL in supported versions 3.8, 3.9, and 3.10?

    None: binaries are no longer produced for these versions, and the code is already compatible (enough).

    Reacted by Erlend E. Aasland
  21. gamer191 commented on Apr 8, 2024

    @gamer191
    gamer191
    on Apr 8, 2024
    More actions

    Any plans to update to Openssl 3.1.x or 3.2.x?

  22. gpshead commented on Apr 8, 2024

    @gpshead
    gpshead
    on Apr 8, 2024
    MemberAuthor
    More actions

    Probably not until OpenSSL declares another Long Term Support version as 3.0.x is per https://www.openssl.org/policies/releasestrat.html

    Reacted by gamer191
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

  • @ambv
    ambv

Labels

3.12only security fixesonly security fixesrelease-blockertype-featureA feature request or enhancementA feature request or enhancement

Projects

  • Release and Deferred blockers 🚫
    Status
    Done
    Show more project fields
  • OpenSSL 3
    Status
    Done
    Show more project fields

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.