Description of problem:
Having a FIPS enabled satellite 6.5 server, attempting to install external capsule on a FIPS enabled rhel 7 server.
Installaition failses in step "Resetting puppet server version param..."
with "Systemd start for httpd failed!" (logs in attachment)
Version-Release number of selected component (if applicable):
Satellite 6.5 snap 16
Steps to Reproduce:
1. install capsule packages on fips machine (in my case from dogfood server)
2. on satellite run capsule-certs-gernerate, copy certs to capsule
3. on capsule run satellite-installer --scenario capsule... (capsule-certs-gernerate)
httpd fails to start
capsule installed as expected
Created attachment 1535957 [details]
Created attachment 1535958 [details]
httpd error log
Created attachment 1535959 [details]
Info from more investigation, when looking at /etc/pki/katello/private/$(hostname)-foreman-proxy-client-bundle.pem,
on FIPS-enabled system, it has a form of pkcs1:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
While on non-FIPS system, it is pkcs8:
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
As https://bugzilla.redhat.com/show_bug.cgi?id=1025057 mentions, it seems like a limitation of mod_ssl to support pkcs8
keys. I was not able to convert pkcs8 to pkcs1 on FIPS-enable machine, probably because of some algorithm being used there (perhaps MD5)
The best solution I can think of is removing the SSLProxyMachineCertificateFile option, as it doesn't look like it has any reason to be there
from functionality point of view (waiting for confirmation)
Combining "Note: Apache httpd mod_ssl does not support PKCS#8 key format." from https://access.redhat.com/solutions/3214421 and "You can't [use BEGIN RSA PRIVATE KEY] because the format isn't allowed in FIPS mode because it uses MD5 for key derivation." from http://openssl.6102.n7.nabble.com/Not-getting-quot-RSA-quot-keyword-for-a-key-in-fips-mode-td58588.html, it gives us the only option of not using SSLProxyMachineCertificateFile for the capsule.
Created redmine issue https://projects.theforeman.org/issues/26088 from this bug
The fixes are proposed in upstream (https://github.com/theforeman/puppet-certs/pull/242, https://github.com/theforeman/puppet-foreman_proxy_content/pull/194), the reproducer machine has been patched and handed over to QEs to continue with capsule validation.
It seems like this workaround https://github.com/theforeman/puppet-certs/pull/243 works on FIPS machine, while keeping the setting for proxy client cert. Deployed it on the reproducer machine for more testing. The installer passed fine with that one.
Verified on Sat 6.5 snap 19
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.