View Issue Details

IDProjectCategoryView StatusLast Update
0008482Rocky-Linux-8krb5public2024-12-06 06:28
Reporterchris hargreaves Assigned ToLouis Abel  
PrioritynormalSeverityminorReproducibilityalways
Status assignedResolutionreopened 
Summary0008482: applications using vanilla openssl shared libraries cant access user information from NIS
Descriptionpatches applied to krb5 and openssl cause applications using their own vanilla openssl shared library to error when looking user information from NIS
 /lib64/libk5crypto.so.3: error: symbol lookup error: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b (fatal)

this makes it difficult to use applications providing their own shared library openssl implementation on a NIS enabled rocky8 host.

workarounds are to LD_LIBRARY_PATH to a vanilla krb5 installation or to LD_PRELOAD the OS libcrypto.so
other than that the only fix seems to be to throw NIS in the dumpster.

This is similar this issue reported here - but this happens with such basic user lookup functions that it is breaking many existing applications.
https://bugzilla.redhat.com/show_bug.cgi?id=1829790
Steps To Reproduceon a NIS enabled system...
$ cat /etc/nsswitch.conf | grep passwd
passwd: compat

build vanilla openssl
build vanilla openssh against a shared libcrypto library (with RPATH).
try to use ssh..
No user exists for uid 13276

openssh directly depends on libcrypto from the openssl installation
but the userid lookup loads nss, which since we use NIS, loads nsl, then tirpc, which depends on krb5crypto which then hits a conflict with our vanilla openssl library.
Additional Informationthis can be more easily be reproduced with simple commands like...

$ LD_LIBRARY_PATH=/path/to/openssl-1.1.1w/lib/ id $( whoami )
id: ‘chargreaves’: no such user

adding LD_DEBUG=libs or similar will expose

 /lib64/libk5crypto.so.3: error: symbol lookup error: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b (fatal)
TagsNo tags attached.

Activities

Louis Abel

Louis Abel

2024-12-06 02:44

administrator   ~0009027

Thank you for the report.

You appear to be reporting a bug on an issue pertaining to your application and custom compiled openssl and openssh libraries, and its interactions with your system.

Unfortunately in this case, we cannot assist nor debug your issue because you are compiling custom libraries and software of packages we already ship. We can only support the packages that we build and ship to our users.

My recommendation is to use the distribution provided packages and find a way to have your application use the system libraries.
chris hargreaves

chris hargreaves

2024-12-06 03:09

reporter   ~0009028

I am not reporting a bug with any custom application. This issue is debugged. It is caused by patches applied the the krb5/openssl libraries on the operating system.
Users should be able to use their own openssl libraries with their applications on an Enterprise Linux without losing the ability to use basic glibc calls to lookup user information.

There are lots of workarounds. But its fair to expect that your existing RHEL 7 compatible application that provided additional library support runs under rockylinux8.

You are REQUIRED need to patch to at least up to these patches from SRPM to make a functional openssl.
$ ls -1 patches/
openssl-1.1.1-evp-kdf.patch
openssl-1.1.1-fips.patch
openssl-1.1.1-krb5-kdf.patch
openssl-1.1.1-ssh-kdf.patch
Neil Hanlon

Neil Hanlon

2024-12-06 03:22

administrator   ~0009029

Thank you for following up on this issue.

I understand your concerns regarding the interaction between custom-compiled libraries and the patches in our distributed packages. However, Enterprise Linux systems are designed with a specific set of integrated libraries, and our support aligns with the use of these system-provided components.

The behavior you're experiencing stems from the use of custom versions of libraries such as OpenSSL, which introduces incompatibilities with the system's patched versions. It is standard practice in Enterprise Linux environments to rely on system libraries to ensure compatibility and support.

Transitioning software between major versions, like RHEL 7 to Rocky Linux 8, often involves changes that aren't backward compatible on a binary level. This is reflective of the different system architecture and security enhancements made over the years.

We recommend utilizing the system-provided versions of OpenSSL to maintain stable and supported operations. If specific functionality from your custom versions is needed, we suggest exploring adjustments to align with the system's library compatibility.

We appreciate the effort and the technical challenges involved in managing library dependencies across different enterprise environments. Although our team is unable to support non-standard configurations, the community forums or mailing lists can be valuable resources for finding potential solutions or workarounds shared by other users.

If you have any further questions or need assistance with supported configurations, please let us know. We're here to help where we can.

Thank you for your understanding.
chris hargreaves

chris hargreaves

2024-12-06 05:53

reporter   ~0009030

This was the first EPEL release that did not change the soname

https://git.rockylinux.org/staging/src-rhel/rpms/openssl/-/blob/c8/SPECS/openssl.spec?ref_type=heads#L12

Seems like it was know that the symbol changes would be an issue but the same so version was used.

Whats the point in having multiple RHEL flavors? Doesnt seem like support is a selling point.
chris hargreaves

chris hargreaves

2024-12-06 06:28

reporter   ~0009031

Go ahead and close this. I had low expectations for any resolution, but figured it would at least try to bring attention to the problems that can be created by the distribution adding symbols to standard libraries.
Who would possibly still be using NIS in 2025 and porting forward openssl built on older glibc?

Hopefully adding symbols isnt something we see more of in future releases, but I guess we will have to see what redhat/centos do.

LD_PRELOAD=/usr/lib64/libcrypto.so is probably the best solution for other people who cant build their own krb5 to avoid this problem.

Issue History

Date Modified Username Field Change
2024-12-06 01:59 chris hargreaves New Issue
2024-12-06 02:44 Louis Abel Assigned To => Louis Abel
2024-12-06 02:44 Louis Abel Status new => closed
2024-12-06 02:44 Louis Abel Resolution open => no change required
2024-12-06 02:44 Louis Abel Note Added: 0009027
2024-12-06 03:09 chris hargreaves Status closed => feedback
2024-12-06 03:09 chris hargreaves Resolution no change required => reopened
2024-12-06 03:09 chris hargreaves Note Added: 0009028
2024-12-06 03:22 Neil Hanlon Status feedback => closed
2024-12-06 03:22 Neil Hanlon Note Added: 0009029
2024-12-06 05:53 chris hargreaves Status closed => feedback
2024-12-06 05:53 chris hargreaves Note Added: 0009030
2024-12-06 06:28 chris hargreaves Note Added: 0009031
2024-12-06 06:28 chris hargreaves Status feedback => assigned