From 045b6e6ed995b4c1e5dab8dbcdf1af4896b52d19 Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Tue, 2 Dec 2014 13:18:36 -0500 Subject: Use new certmonger locking to prevent NSS database corruption. dogtag opens its NSS database in read/write mode so we need to be very careful during renewal that we don't also open it up read/write. We basically need to serialize access to the database. certmonger does the majority of this work via internal locking from the point where it generates a new key/submits a rewewal through the pre_save and releases the lock after the post_save command. This lock is held per NSS database so we're save from certmonger. dogtag needs to be shutdown in the pre_save state so certmonger can safely add the certificate and we can manipulate trust in the post_save command. Fix a number of bugs in renewal. The CA wasn't actually being restarted at all due to a naming change upstream. In python we need to reference services using python-ish names but the service is pki-cad. We need a translation for non-Fedora systems as well. Update the CA ou=People entry when he CA subsystem certificate is renewed. This certificate is used as an identity certificate to bind to the DS instance. https://fedorahosted.org/freeipa/ticket/3292 https://fedorahosted.org/freeipa/ticket/3322 --- install/restart_scripts/stop_pkicad | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 install/restart_scripts/stop_pkicad (limited to 'install/restart_scripts/stop_pkicad') diff --git a/install/restart_scripts/stop_pkicad b/install/restart_scripts/stop_pkicad new file mode 100644 index 00000000..f023b1bb --- /dev/null +++ b/install/restart_scripts/stop_pkicad @@ -0,0 +1,43 @@ +#!/usr/bin/python -E +# +# Authors: +# Rob Crittenden +# +# Copyright (C) 2012 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import syslog +from ipapython import services as ipaservices +from ipapython import dogtag +from ipalib import api + +api.bootstrap(context='restart') +api.finalize() + +configured_constants = dogtag.configured_constants(api) +dogtag_instance = configured_constants.PKI_INSTANCE_NAME + +syslog.syslog(syslog.LOG_NOTICE, "certmonger stopping %sd" % dogtag_instance) + +try: + if configured_constants.DOGTAG_VERSION == 9: + ipaservices.knownservices.pki_cad.start(dogtag_instance) + else: + ipaservices.knownservices.pki_tomcatd.start(dogtag_instance) +except Exception, e: + syslog.syslog(syslog.LOG_ERR, "Cannot stop %sd: %s" % + (dogtag_instance, str(e))) -- cgit