-
Notifications
You must be signed in to change notification settings - Fork 582
Update to OpenSSL v3.3 #4274
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
base: main
Are you sure you want to change the base?
Update to OpenSSL v3.3 #4274
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #4274 +/- ##
==========================================
- Coverage 86.00% 85.81% -0.20%
==========================================
Files 56 56
Lines 17354 17354
==========================================
- Hits 14925 14892 -33
- Misses 2429 2462 +33 ☔ View full report in Codecov by Sentry. |
Seems all the 24.04 builds are failing for some reason |
This PR is blocked on linking to the built-in system libcrypto for Ubuntu 24.04. Apparently, the built in version hasn't been updated to a recent enough version to support dynamic linking from libssl v3.3. cc @wfurt |
According to GitHub copilot: The error in the logs indicates multiple "undefined reference" issues related to OpenSSL functions, such as Potential Fixes:
|
These errors are only occurring when we build against the latest v3.3 release of quictls/openssl but statically link against the distro's libcrytpo. It seems there are breaking changes around these APIs for these versions. cc @wfurt for possible suggestions on a path forward |
I'll take a look next week. I assume this fails on the Ubuntu 24? |
It fails on 22.04 and 24.04. |
I look at it @nibanks and it make sense. Here is what happened. It seems like OpenSSL 3.3 added some new functions and new libssl now depends on new functionality in lib crypto. That is pretty normal IMHO. But for msquic that is breaking change because the libssl part you link cannot find what it expects. To verify this I simply build your branch on Ubuntu 24.10 that has updated OpenSSL and everything works just like it used to:
So in general case you need lib crypto of matching or newer version. I think we just got lucky that not much changed or was added in 3.1 and 3.2. The other way still seems to work. I took package build on/for 22.04 and the library loss just fine with Ubuntu 24.10 and libcrypto 3.3.
there are (at least) two ways how to fix it:
Please let me know if that makes sense. I think you can build this in container or updated VM image if you want to see perf numbers. |
@wfurt thanks for looking into this and explaining it so clearly. I think the fundamental problem on our side is that we assume Ubuntu 20.* (and earlier) map to openssl v1.* and that 22.* and 24.* map to openssl v3.*. This does not seem to be correct. It seems the different Ubuntu minor versions map to different openssl minor versions. This seems to force us to either (a) drop support of previous minor versions of Ubuntu or (b) we need to support more than just 1 version of openssl v1.* and v3.* and maintain the mapping to the various Ubuntu versions out there. I don't see (a) as a practical option. And to support (b) there is going to be non-trivial work. We need to figure out a more dynamic way to build against the right openssl version than having a dedicated submodule for every version we support. |
I can probably look at it more this week. If there are only few missing functions some form of shim may be reasonable option. 1.2 is dead and 3.9-3.2 were close enough. I suspect her breaking changes will happen somewhat regularly but infrequently. |
No description provided.