mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Remove ipa-ca.crt from systemwide CA store on client uninstall and cert update
The file was used by previous versions of IPA to provide the IPA CA certificate to p11-kit and has since been obsoleted by ipa.p11-kit, a file which contains all the CA certificates and associated trust policy from the LDAP certificate store. Since p11-kit is hooked into /etc/httpd/alias, ipa-ca.crt must be removed to prevent certificate import failures in installer code. Also add ipa.p11-kit to the files owned by the freeipa-python package. https://fedorahosted.org/freeipa/ticket/3259 Reviewed-By: Rob Crittenden <rcritten@redhat.com>
This commit is contained in:
parent
4e68046751
commit
734afdf936
@ -815,6 +815,7 @@ fi
|
|||||||
%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/key3.db
|
%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/key3.db
|
||||||
%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/secmod.db
|
%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/secmod.db
|
||||||
%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/pwdfile.txt
|
%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/pwdfile.txt
|
||||||
|
%ghost %config(noreplace) %{_sysconfdir}/pki/ca-trust/source/ipa.p11-kit
|
||||||
|
|
||||||
%if ! %{ONLY_CLIENT}
|
%if ! %{ONLY_CLIENT}
|
||||||
%files tests -f tests-python.list
|
%files tests -f tests-python.list
|
||||||
|
@ -80,6 +80,7 @@ class BasePathNamespace(object):
|
|||||||
PAM_LDAP_CONF = "/etc/pam_ldap.conf"
|
PAM_LDAP_CONF = "/etc/pam_ldap.conf"
|
||||||
PASSWD = "/etc/passwd"
|
PASSWD = "/etc/passwd"
|
||||||
ETC_PKI_CA_DIR = "/etc/pki-ca"
|
ETC_PKI_CA_DIR = "/etc/pki-ca"
|
||||||
|
SYSTEMWIDE_CA_STORE = "/etc/pki/ca-trust/source/anchors/"
|
||||||
IPA_P11_KIT = "/etc/pki/ca-trust/source/ipa.p11-kit"
|
IPA_P11_KIT = "/etc/pki/ca-trust/source/ipa.p11-kit"
|
||||||
NSS_DB_DIR = "/etc/pki/nssdb"
|
NSS_DB_DIR = "/etc/pki/nssdb"
|
||||||
NSSDB_CERT8_DB = "/etc/pki/nssdb/cert8.db"
|
NSSDB_CERT8_DB = "/etc/pki/nssdb/cert8.db"
|
||||||
|
@ -158,6 +158,16 @@ class FedoraTaskNamespace(BaseTaskNamespace):
|
|||||||
auth_config.execute()
|
auth_config.execute()
|
||||||
|
|
||||||
def insert_ca_certs_into_systemwide_ca_store(self, ca_certs):
|
def insert_ca_certs_into_systemwide_ca_store(self, ca_certs):
|
||||||
|
new_cacert_path = os.path.join(paths.SYSTEMWIDE_CA_STORE, 'ipa-ca.crt')
|
||||||
|
|
||||||
|
if os.path.exists(new_cacert_path):
|
||||||
|
try:
|
||||||
|
os.remove(new_cacert_path)
|
||||||
|
except OSError, e:
|
||||||
|
root_logger.error(
|
||||||
|
"Could not remove %s: %s", new_cacert_path, e)
|
||||||
|
return False
|
||||||
|
|
||||||
new_cacert_path = paths.IPA_P11_KIT
|
new_cacert_path = paths.IPA_P11_KIT
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -250,25 +260,33 @@ class FedoraTaskNamespace(BaseTaskNamespace):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def remove_ca_certs_from_systemwide_ca_store(self):
|
def remove_ca_certs_from_systemwide_ca_store(self):
|
||||||
new_cacert_path = paths.IPA_P11_KIT
|
ipa_ca_crt = os.path.join(paths.SYSTEMWIDE_CA_STORE, 'ipa-ca.crt')
|
||||||
|
update = False
|
||||||
|
|
||||||
# Remove CA cert from systemwide store
|
# Remove CA cert from systemwide store
|
||||||
if os.path.exists(new_cacert_path):
|
for new_cacert_path in (paths.IPA_P11_KIT, ipa_ca_crt):
|
||||||
|
if not os.path.exists(new_cacert_path):
|
||||||
|
continue
|
||||||
try:
|
try:
|
||||||
os.remove(new_cacert_path)
|
os.remove(new_cacert_path)
|
||||||
ipautil.run([paths.UPDATE_CA_TRUST])
|
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
root_logger.error('Could not remove: %s, %s'
|
root_logger.error(
|
||||||
% (new_cacert_path, str(e)))
|
"Could not remove %s: %s", new_cacert_path, e)
|
||||||
return False
|
else:
|
||||||
|
update = True
|
||||||
|
|
||||||
|
if update:
|
||||||
|
try:
|
||||||
|
ipautil.run([paths.UPDATE_CA_TRUST])
|
||||||
except CalledProcessError, e:
|
except CalledProcessError, e:
|
||||||
root_logger.error('Could not update systemwide CA trust '
|
root_logger.error(
|
||||||
'database: %s' % str(e))
|
"Could not update systemwide CA trust database: %s", e)
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
root_logger.info('Systemwide CA database updated.')
|
root_logger.info("Systemwide CA database updated.")
|
||||||
|
return True
|
||||||
|
|
||||||
return True
|
return False
|
||||||
|
|
||||||
def backup_and_replace_hostname(self, fstore, statestore, hostname):
|
def backup_and_replace_hostname(self, fstore, statestore, hostname):
|
||||||
old_hostname = socket.gethostname()
|
old_hostname = socket.gethostname()
|
||||||
|
Loading…
Reference in New Issue
Block a user