|
|
aa60fb |
From d1470a8a5d2f39b57d8d66e8d0d7e8437fcd2ae4 Mon Sep 17 00:00:00 2001
|
|
|
aa60fb |
From: Martin Babinsky <mbabinsk@redhat.com>
|
|
|
aa60fb |
Date: Wed, 2 Dec 2015 12:22:45 +0100
|
|
|
aa60fb |
Subject: [PATCH] replica install: improvements in the handling of CA-related
|
|
|
aa60fb |
IPA config entries
|
|
|
aa60fb |
|
|
|
aa60fb |
When a CA-less replica is installed, its IPA config file should be updated so
|
|
|
aa60fb |
that ca_host points to nearest CA master and all certificate requests are
|
|
|
aa60fb |
forwarded to it. A subsequent installation of CA subsystem on the replica
|
|
|
aa60fb |
should clear this entry from the config so that all certificate requests are
|
|
|
aa60fb |
handled by freshly installed local CA.
|
|
|
aa60fb |
|
|
|
aa60fb |
https://fedorahosted.org/freeipa/ticket/5506
|
|
|
aa60fb |
|
|
|
aa60fb |
Reviewed-By: Martin Basti <mbasti@redhat.com>
|
|
|
aa60fb |
---
|
|
|
aa60fb |
ipaserver/install/ca.py | 16 ----------------
|
|
|
aa60fb |
ipaserver/install/cainstance.py | 18 ++++++++++++++++++
|
|
|
aa60fb |
ipaserver/install/server/replicainstall.py | 3 +++
|
|
|
aa60fb |
3 files changed, 21 insertions(+), 16 deletions(-)
|
|
|
aa60fb |
|
|
|
aa60fb |
diff --git a/ipaserver/install/ca.py b/ipaserver/install/ca.py
|
|
|
aa60fb |
index d2fb5feeaf96e8450eddb1bc4e65ef3316b05b38..b4db8dcbfad9d482e7106cd06b3d497ccf8954f0 100644
|
|
|
aa60fb |
--- a/ipaserver/install/ca.py
|
|
|
aa60fb |
+++ b/ipaserver/install/ca.py
|
|
|
aa60fb |
@@ -12,7 +12,6 @@ from ipaplatform.paths import paths
|
|
|
aa60fb |
from ipaserver.install import installutils, certs
|
|
|
aa60fb |
from ipaserver.install.replication import replica_conn_check
|
|
|
aa60fb |
from ipalib import api, certstore, x509
|
|
|
aa60fb |
-from ConfigParser import RawConfigParser
|
|
|
aa60fb |
from ipapython.dn import DN
|
|
|
aa60fb |
from ipapython.ipa_log_manager import root_logger
|
|
|
aa60fb |
|
|
|
aa60fb |
@@ -240,21 +239,6 @@ def install_step_1(standalone, replica_config, options):
|
|
|
aa60fb |
if standalone:
|
|
|
aa60fb |
ca.start(ca.dogtag_constants.PKI_INSTANCE_NAME)
|
|
|
aa60fb |
|
|
|
aa60fb |
- # Update config file
|
|
|
aa60fb |
- try:
|
|
|
aa60fb |
- parser = RawConfigParser()
|
|
|
aa60fb |
- parser.read(paths.IPA_DEFAULT_CONF)
|
|
|
aa60fb |
- parser.set('global', 'enable_ra', 'True')
|
|
|
aa60fb |
- parser.set('global', 'ra_plugin', 'dogtag')
|
|
|
aa60fb |
- parser.set('global', 'dogtag_version',
|
|
|
aa60fb |
- str(dogtag_constants.DOGTAG_VERSION))
|
|
|
aa60fb |
- with open(paths.IPA_DEFAULT_CONF, 'w') as f:
|
|
|
aa60fb |
- parser.write(f)
|
|
|
aa60fb |
- except IOError, e:
|
|
|
aa60fb |
- print "Failed to update /etc/ipa/default.conf"
|
|
|
aa60fb |
- root_logger.error(str(e))
|
|
|
aa60fb |
- sys.exit(1)
|
|
|
aa60fb |
-
|
|
|
aa60fb |
# We need to restart apache as we drop a new config file in there
|
|
|
aa60fb |
services.knownservices.httpd.restart(capture_output=True)
|
|
|
aa60fb |
|
|
|
aa60fb |
diff --git a/ipaserver/install/cainstance.py b/ipaserver/install/cainstance.py
|
|
|
aa60fb |
index 1a98c438786ae7dad208212fff23e3a760c95b3c..b06760308865aa42afac79d6750f4a422a5c8f95 100644
|
|
|
aa60fb |
--- a/ipaserver/install/cainstance.py
|
|
|
aa60fb |
+++ b/ipaserver/install/cainstance.py
|
|
|
aa60fb |
@@ -482,6 +482,8 @@ class CAInstance(DogtagInstance):
|
|
|
aa60fb |
self.step("importing IPA certificate profiles",
|
|
|
aa60fb |
import_included_profiles)
|
|
|
aa60fb |
self.step("adding default CA ACL", ensure_default_caacl)
|
|
|
aa60fb |
+ self.step("updating IPA configuration",
|
|
|
aa60fb |
+ lambda: update_ipa_conf(self.dogtag_constants))
|
|
|
aa60fb |
|
|
|
aa60fb |
self.start_creation(runtime=210)
|
|
|
aa60fb |
|
|
|
aa60fb |
@@ -1880,6 +1882,22 @@ def ensure_default_caacl():
|
|
|
aa60fb |
api.Backend.ldap2.disconnect()
|
|
|
aa60fb |
|
|
|
aa60fb |
|
|
|
aa60fb |
+def update_ipa_conf(dogtag_constants):
|
|
|
aa60fb |
+ """
|
|
|
aa60fb |
+ Update IPA configuration file to ensure that RA plugins are enabled and
|
|
|
aa60fb |
+ that CA host points to localhost
|
|
|
aa60fb |
+ """
|
|
|
aa60fb |
+ parser = ConfigParser.RawConfigParser()
|
|
|
aa60fb |
+ parser.read(paths.IPA_DEFAULT_CONF)
|
|
|
aa60fb |
+ parser.set('global', 'enable_ra', 'True')
|
|
|
aa60fb |
+ parser.set('global', 'ra_plugin', 'dogtag')
|
|
|
aa60fb |
+ parser.set('global', 'dogtag_version',
|
|
|
aa60fb |
+ str(dogtag_constants.DOGTAG_VERSION))
|
|
|
aa60fb |
+ parser.remove_option('global', 'ca_host')
|
|
|
aa60fb |
+ with open(paths.IPA_DEFAULT_CONF, 'w') as f:
|
|
|
aa60fb |
+ parser.write(f)
|
|
|
aa60fb |
+
|
|
|
aa60fb |
+
|
|
|
aa60fb |
if __name__ == "__main__":
|
|
|
aa60fb |
standard_logging_setup("install.log")
|
|
|
aa60fb |
ds = dsinstance.DsInstance()
|
|
|
aa60fb |
diff --git a/ipaserver/install/server/replicainstall.py b/ipaserver/install/server/replicainstall.py
|
|
|
aa60fb |
index 317eda92dd4322542f035c2df4dba919a5898cc7..2ab95add90d33eb191d4e75b62cb4eceac40551b 100644
|
|
|
aa60fb |
--- a/ipaserver/install/server/replicainstall.py
|
|
|
aa60fb |
+++ b/ipaserver/install/server/replicainstall.py
|
|
|
aa60fb |
@@ -378,6 +378,9 @@ def install_check(installer):
|
|
|
aa60fb |
fd.write("ra_plugin=dogtag\n")
|
|
|
aa60fb |
fd.write("dogtag_version=%s\n" %
|
|
|
aa60fb |
dogtag.install_constants.DOGTAG_VERSION)
|
|
|
aa60fb |
+
|
|
|
aa60fb |
+ if not config.setup_ca:
|
|
|
aa60fb |
+ fd.write("ca_host={0}\n".format(config.master_host_name))
|
|
|
aa60fb |
else:
|
|
|
aa60fb |
fd.write("enable_ra=False\n")
|
|
|
aa60fb |
fd.write("ra_plugin=none\n")
|
|
|
aa60fb |
--
|
|
|
aa60fb |
2.5.0
|
|
|
aa60fb |
|