|
|
2e9388 |
From 09ead70bf9a081d8e2961a83d5dfe64d8f4c0399 Mon Sep 17 00:00:00 2001
|
|
|
2e9388 |
From: Jan Cholasta <jcholast@redhat.com>
|
|
|
2e9388 |
Date: Mon, 9 Nov 2015 10:53:02 +0100
|
|
|
2e9388 |
Subject: [PATCH] cert renewal: make renewal of ipaCert atomic
|
|
|
2e9388 |
|
|
|
2e9388 |
This prevents errors when renewing other certificates during the renewal of
|
|
|
2e9388 |
ipaCert.
|
|
|
2e9388 |
|
|
|
2e9388 |
https://fedorahosted.org/freeipa/ticket/5436
|
|
|
2e9388 |
|
|
|
2e9388 |
Reviewed-By: David Kupka <dkupka@redhat.com>
|
|
|
2e9388 |
---
|
|
|
2e9388 |
install/restart_scripts/Makefile.am | 1 +
|
|
|
2e9388 |
install/restart_scripts/renew_ra_cert | 5 ++++-
|
|
|
2e9388 |
install/restart_scripts/renew_ra_cert_pre | 18 ++++++++++++++++++
|
|
|
2e9388 |
ipaserver/install/cainstance.py | 2 +-
|
|
|
2e9388 |
ipaserver/install/server/upgrade.py | 4 ++--
|
|
|
2e9388 |
5 files changed, 26 insertions(+), 4 deletions(-)
|
|
|
2e9388 |
create mode 100755 install/restart_scripts/renew_ra_cert_pre
|
|
|
2e9388 |
|
|
|
2e9388 |
diff --git a/install/restart_scripts/Makefile.am b/install/restart_scripts/Makefile.am
|
|
|
2e9388 |
index 58057aa3198c892fc8ebb0df403495566ed77d1d..c4bf8195ea85ee0a9dba53fc2581e90c18a9127d 100644
|
|
|
2e9388 |
--- a/install/restart_scripts/Makefile.am
|
|
|
2e9388 |
+++ b/install/restart_scripts/Makefile.am
|
|
|
2e9388 |
@@ -7,6 +7,7 @@ app_DATA = \
|
|
|
2e9388 |
renew_ca_cert \
|
|
|
2e9388 |
renew_ra_cert \
|
|
|
2e9388 |
stop_pkicad \
|
|
|
2e9388 |
+ renew_ra_cert_pre \
|
|
|
2e9388 |
$(NULL)
|
|
|
2e9388 |
|
|
|
2e9388 |
EXTRA_DIST = \
|
|
|
2e9388 |
diff --git a/install/restart_scripts/renew_ra_cert b/install/restart_scripts/renew_ra_cert
|
|
|
2e9388 |
index 3a36f739ae53391e502356f7b6b4fd96a536c3a6..988ada946aed47d1f2b76c1add48ea8c8d64a161 100644
|
|
|
2e9388 |
--- a/install/restart_scripts/renew_ra_cert
|
|
|
2e9388 |
+++ b/install/restart_scripts/renew_ra_cert
|
|
|
2e9388 |
@@ -77,8 +77,11 @@ def _main():
|
|
|
2e9388 |
|
|
|
2e9388 |
|
|
|
2e9388 |
def main():
|
|
|
2e9388 |
- with certs.renewal_lock:
|
|
|
2e9388 |
+ try:
|
|
|
2e9388 |
_main()
|
|
|
2e9388 |
+ finally:
|
|
|
2e9388 |
+ # lock acquired in renew_ra_cert_pre
|
|
|
2e9388 |
+ certs.renewal_lock.release('renew_ra_cert')
|
|
|
2e9388 |
|
|
|
2e9388 |
|
|
|
2e9388 |
try:
|
|
|
2e9388 |
diff --git a/install/restart_scripts/renew_ra_cert_pre b/install/restart_scripts/renew_ra_cert_pre
|
|
|
2e9388 |
new file mode 100755
|
|
|
2e9388 |
index 0000000000000000000000000000000000000000..d0f743c099162e4c5afd7d96287e58492246db35
|
|
|
2e9388 |
--- /dev/null
|
|
|
2e9388 |
+++ b/install/restart_scripts/renew_ra_cert_pre
|
|
|
2e9388 |
@@ -0,0 +1,18 @@
|
|
|
2e9388 |
+#!/usr/bin/python2 -E
|
|
|
2e9388 |
+#
|
|
|
2e9388 |
+# Copyright (C) 2015 FreeIPA Contributors see COPYING for license
|
|
|
2e9388 |
+#
|
|
|
2e9388 |
+
|
|
|
2e9388 |
+import syslog
|
|
|
2e9388 |
+import traceback
|
|
|
2e9388 |
+
|
|
|
2e9388 |
+from ipaserver.install import certs
|
|
|
2e9388 |
+
|
|
|
2e9388 |
+
|
|
|
2e9388 |
+def main():
|
|
|
2e9388 |
+ certs.renewal_lock.acquire('renew_ra_cert')
|
|
|
2e9388 |
+
|
|
|
2e9388 |
+try:
|
|
|
2e9388 |
+ main()
|
|
|
2e9388 |
+except Exception:
|
|
|
2e9388 |
+ syslog.syslog(syslog.LOG_ERR, traceback.format_exc())
|
|
|
2e9388 |
diff --git a/ipaserver/install/cainstance.py b/ipaserver/install/cainstance.py
|
|
|
2e9388 |
index dfe023c08c9b8d1b28f1659b7c5a6395f3afe879..d230c9bdcab68f02cce32a2aeb89ca3e2143eefe 100644
|
|
|
2e9388 |
--- a/ipaserver/install/cainstance.py
|
|
|
2e9388 |
+++ b/ipaserver/install/cainstance.py
|
|
|
2e9388 |
@@ -1305,7 +1305,7 @@ class CAInstance(DogtagInstance):
|
|
|
2e9388 |
pin=None,
|
|
|
2e9388 |
pinfile=paths.ALIAS_PWDFILE_TXT,
|
|
|
2e9388 |
secdir=paths.HTTPD_ALIAS_DIR,
|
|
|
2e9388 |
- pre_command=None,
|
|
|
2e9388 |
+ pre_command='renew_ra_cert_pre',
|
|
|
2e9388 |
post_command='renew_ra_cert')
|
|
|
2e9388 |
except RuntimeError, e:
|
|
|
2e9388 |
self.log.error(
|
|
|
2e9388 |
diff --git a/ipaserver/install/server/upgrade.py b/ipaserver/install/server/upgrade.py
|
|
|
2e9388 |
index e0a45a097171613397db42e1c035f0d818a3ecf5..c8f744c392c7b859459bda63c1f397226553d4ba 100644
|
|
|
2e9388 |
--- a/ipaserver/install/server/upgrade.py
|
|
|
2e9388 |
+++ b/ipaserver/install/server/upgrade.py
|
|
|
2e9388 |
@@ -799,7 +799,7 @@ def certificate_renewal_update(ca):
|
|
|
2e9388 |
dogtag_constants = dogtag.configured_constants()
|
|
|
2e9388 |
|
|
|
2e9388 |
# bump version when requests is changed
|
|
|
2e9388 |
- version = 3
|
|
|
2e9388 |
+ version = 4
|
|
|
2e9388 |
requests = (
|
|
|
2e9388 |
(
|
|
|
2e9388 |
dogtag_constants.ALIAS_DIR,
|
|
|
2e9388 |
@@ -837,7 +837,7 @@ def certificate_renewal_update(ca):
|
|
|
2e9388 |
paths.HTTPD_ALIAS_DIR,
|
|
|
2e9388 |
'ipaCert',
|
|
|
2e9388 |
'dogtag-ipa-ca-renew-agent',
|
|
|
2e9388 |
- None,
|
|
|
2e9388 |
+ 'renew_ra_cert_pre',
|
|
|
2e9388 |
'renew_ra_cert',
|
|
|
2e9388 |
None,
|
|
|
2e9388 |
),
|
|
|
2e9388 |
--
|
|
|
2e9388 |
2.4.3
|
|
|
2e9388 |
|