IPA server installed CA-less, with ldap/http certs signed by rootCA. The admin replaces the http cert with a certificate signed by subCA (subCA is a sub-CA of rootCA). The command succeeds but clients are not able any more to use ipa * commands
ipa-server-certinstall --http --pin <pin> --dirman-password <pwd> /path/to/cert.pem /path/to/cert.key /path/to/subca.pem
ipactl restart
ipa user-find
ipa: ERROR: cannot connect to 'https://vm-064.abc.idm.lab.eng.brq.redhat.com/ipa/json': [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:866)
As the subCA is not trusted (not installed in /etc/ipa/nssdb, not present in /etc/ipa/ca.crt), the clients do not trust the http server cert.
I would expect ipa-server-certinstall to refuse changing the http cert. Note that ipa-server-certinstall --dirsrv (for ldap cert) properly refuses the new cert, but it's using a NSS database instead of openssl.
ipa-server-certinstall
freeipa-server-4.7.0-3.fc28.x86_64 (this happens since the move from mod-nss to mod-ssl for apache servre certificates).
Actually I argue that it's correct to not have the subCA in /etc/ipa/nssdb and /etc/ipa/ca.crt. it should be enough to have the root CA in the trust store. Apache, 389-DS, and other services should be configured to correctly send intermediate CA certs with the server cert.
/etc/ipa/nssdb
/etc/ipa/ca.crt
See https://pagure.io/freeipa/issue/6454
master: