azurelinux
azurelinux copied to clipboard
Introduce openssl-compat packages
Summary
This change introduces the openssl-compat* set of packages. These are drop-in replacements for openssl* with two key differences:
- It is much more similar to Fedora's build of
opensslin terms of patches applied. - It ships with the
opensslFIPS provider rather than using Microsoft'ssymcryptprovider.
The overall solution is comprised of three important specs
openssl-compat.spec. This is the main spec file for theopenssl-compatpackages. It depends on the other specs. This spec is version/release-entangled withopensslitself. All packages haveProvidesdirectives so they provide the equivalentopensslpackage. For example,openssl-compat-libsprovidesopenssl-libs.openssl-compat-fips-bootstrap.spec. This has the same set of patches and the same configuration asopenssl-compat.spec. It produces the FIPS provider (fips.so) and related debug info, which is consumed byopenssl-compat. This design allows the version we build/release offips.soto vary independently of the rest ofopenssl-compat, so we would only need to get one version certified.azurelinux-rpm-macros.spec. We added a packageazurelinux-openssl-compat-generatorthat adds the correctProvidesdirectives to theopenssl-compatpackages post-build. This is necessary to overcome a weakness in our build system that doesn't handleProvidescorrectly if two packages provide the same thing.
We also have two new marketplace image definitions: marketplace-compat-gen2-fips.json and marketplace-compat-gen2-aarch64-fips.json. These are exactly like the standard FIPS marketplace images except:
- They use the
core-packages-base-image-compatset of core packages. This providesdnfrather thantdnfand theopenssl-compat*packages rather than theopenssl*packages. - They add a line to
/etc/dnf/dnf.confthat will makednfignore theopenssl*packages.
Does this affect the toolchain?
NO
Note that while openssl is in the toolchain, openssl-compat is not.
Associated issues
ADO: Pending
Test Methodology
- Built and tested standard marketplace images and the new compat image. Added local repos with the
openssl-compat*packages and made sure everything installs correctly.