-
-
Notifications
You must be signed in to change notification settings - Fork 31.8k
Use OpenSSL 3.0.x in our binary builds #99079
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@gpshead Out of curiosity, 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.
|
Oh, I thought that we can manage the boringSSL as the vendored library likewise libexpat or mimalloc.
Oh got it..
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. |
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. |
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:
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
|
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. |
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. |
Can cpython limit openssl3 version? Some version of openssl3 (>3.0.8 Since libcrypto is required by fundamental modules like Update: This is not fixed in any release branch of openssl. According to other comments, not only debugging is affected, but I have no problem normally running with those openssl versions. Update 2: Given the condition where this error would be triggered (compile from source, Apple chip, use openssl >= 3.1, debugging with LLDB), I guess a warning message would be sufficient, maybe near the |
@ronaldoussoren, @ned-deily here is a macOS-specific OpenSSL issue reported in the previous comment by @oraluben. |
This is fixed in a branch ( |
it looks like they've at least got a pending PR that'll backport it to 3.1, but it isn't clear to me exactly which version the problem was introduced in. @oraluben mentions >3.0.8 as okay but from the linked openssl issue it is not obvious to anyone not intimately familiar with the openssl workflow or codebase which versions which offending changes landed in (read: I'm not going to be that person). Regardless, a configure.ac check on Darwin to avoid a specific version range makes sense. |
I'm not sure why we should call this transitory issue out. Presumably it affects other projects than cPython as well and, in the end, we have no control over what version of OpenSSL or equivalent that builders or distributors use other than the python.org macOS installers which currently don't use OpenSSL 3.x anyway. |
Well, I also misunderstood in my first comment. Here's my current understanding: tldr: now, and hopefully only openssl 3.1.0 is affected. Some instruction probing logic breaks debugging in darwin-aarch64, these commits are in the dev branch of openssl ( The fix (openssl/openssl@52a3814) is also in |
My pardon for an attempt to reassign this issue to 3.13, I missed that it's a release blocker for 3.12. However, will it be possible to resolve the child gh-90728 tomorrow at best, the next week at worst? |
Ok, great. |
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). |
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). |
Any plans to update to Openssl 3.1.x or 3.2.x? |
Probably not until OpenSSL declares another Long Term Support version as 3.0.x is per https://www.openssl.org/policies/releasestrat.html |
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:
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
The text was updated successfully, but these errors were encountered: