summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2016-03-25 03:33:05 +0100
committerEndi S. Dewata <edewata@redhat.com>2016-04-05 22:46:17 +0200
commitaa5f83fe574cdf1e53236e7d05bf8dd8532143b7 (patch)
treed7e78e9f765d0a6709dc6aba569a6274e5569f68
parentb214755763a31545cfb8980e0625fcccb4e00300 (diff)
downloadpki-aa5f83fe574cdf1e53236e7d05bf8dd8532143b7.tar.gz
pki-aa5f83fe574cdf1e53236e7d05bf8dd8532143b7.tar.xz
pki-aa5f83fe574cdf1e53236e7d05bf8dd8532143b7.zip
Fixed certificate chain import problem.
In the external CA case if the externally-signed CA certificate is included in the certificate chain the CA certificate may get imported with an incorrect nickname. The code has been modified such that the certificate chain is imported after the CA certificate is imported with the proper nickname. https://fedorahosted.org/pki/ticket/2022
-rw-r--r--base/server/python/pki/server/deployment/scriptlets/configuration.py23
1 files changed, 13 insertions, 10 deletions
diff --git a/base/server/python/pki/server/deployment/scriptlets/configuration.py b/base/server/python/pki/server/deployment/scriptlets/configuration.py
index fc6877d36..a467df7a6 100644
--- a/base/server/python/pki/server/deployment/scriptlets/configuration.py
+++ b/base/server/python/pki/server/deployment/scriptlets/configuration.py
@@ -158,17 +158,9 @@ class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
signing_csr = pki.nssdb.convert_csr(signing_csr, 'pem', 'base64')
subsystem.config['ca.signing.certreq'] = signing_csr
- # If specified, import external CA cert into NSS database.
- external_ca_cert_chain_nickname = deployer.mdict['pki_external_ca_cert_chain_nickname']
- external_ca_cert_chain_file = deployer.mdict['pki_external_ca_cert_chain_path']
- if external_ca_cert_chain_file:
- cert_chain, _nicks = nssdb.import_cert_chain(
- nickname=external_ca_cert_chain_nickname,
- cert_chain_file=external_ca_cert_chain_file,
- trust_attributes='CT,C,C')
- subsystem.config['ca.external_ca_chain.cert'] = cert_chain
-
# If specified, import externally-signed CA cert into NSS database.
+ # Note: CA cert must be imported before the cert chain to ensure that
+ # the CA cert is imported with the correct nickname.
signing_nickname = deployer.mdict['pki_ca_signing_nickname']
signing_cert_file = deployer.mdict['pki_external_ca_cert_path']
if signing_cert_file:
@@ -183,6 +175,17 @@ class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
pkcs12_password = deployer.mdict['pki_external_pkcs12_password']
nssdb.import_pkcs12(pkcs12_file, pkcs12_password)
+ # If specified, import cert chain into NSS database.
+ external_ca_cert_chain_nickname = \
+ deployer.mdict['pki_external_ca_cert_chain_nickname']
+ external_ca_cert_chain_file = deployer.mdict['pki_external_ca_cert_chain_path']
+ if external_ca_cert_chain_file:
+ cert_chain, _nicks = nssdb.import_cert_chain(
+ nickname=external_ca_cert_chain_nickname,
+ cert_chain_file=external_ca_cert_chain_file,
+ trust_attributes='CT,C,C')
+ subsystem.config['ca.external_ca_chain.cert'] = cert_chain
+
# Export CA cert from NSS database and import it into CS.cfg.
signing_cert_data = nssdb.get_cert(
nickname=signing_nickname,