Skip to content

Commit

Permalink
Clean up PKIDeployer.setup_system_cert()
Browse files Browse the repository at this point in the history
The PKIDeployer.setup_system_cert() has been modified to process
remote cert first, then self-signed or local cert.
  • Loading branch information
edewata committed Jan 13, 2024
1 parent aab150d commit 0a08100
Showing 1 changed file with 37 additions and 16 deletions.
53 changes: 37 additions & 16 deletions base/server/python/pki/server/deployment/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3331,6 +3331,10 @@ def setup_system_cert(self, nssdb, subsystem, tag, system_cert, request):

if request.systemCert.type == 'remote':

if cert_info:
logger.info('Reusing existing %s cert in NSS database', tag)
return

# Issue subordinate CA signing cert using remote CA signing cert.

if subsystem.type == 'CA' and \
Expand Down Expand Up @@ -3361,7 +3365,7 @@ def setup_system_cert(self, nssdb, subsystem, tag, system_cert, request):

logger.info('Requesting %s cert from %s', tag, ca_url)

pem_cert = self.request_cert(
cert_pem = self.request_cert(
ca_url,
request.systemCert.requestType,
request.systemCert.request,
Expand All @@ -3370,29 +3374,46 @@ def setup_system_cert(self, nssdb, subsystem, tag, system_cert, request):
dns_names=request.systemCert.dnsNames,
requestor=requestor)

system_cert['data'] = pki.nssdb.convert_cert(pem_cert, 'pem', 'base64')
system_cert['data'] = pki.nssdb.convert_cert(cert_pem, 'pem', 'base64')

cert_obj = x509.load_pem_x509_certificate(
bytes(cert_pem, 'utf-8'),
backend=default_backend())
logger.info('- serial: %s', hex(cert_obj.serial_number))

else: # selfsign or local
logger.info('Importing %s cert into NSS database', tag)
nssdb.add_cert(
nickname=request.systemCert.nickname,
cert_data=system_cert['data'],
cert_format='base64',
token=request.systemCert.token)

self.import_cert_request(subsystem, tag, request)
return

system_cert['data'] = self.create_cert(subsystem, tag, request)
self.import_cert(subsystem, tag, request, system_cert['data'])
# selfsign or local

cert_pem = pki.nssdb.convert_cert(system_cert['data'], 'base64', 'pem').encode()
cert_obj = x509.load_pem_x509_certificate(cert_pem, backend=default_backend())
logger.info('- serial: %s', hex(cert_obj.serial_number))
# import request into CA database and get a request ID
self.import_cert_request(subsystem, tag, request)

if cert_info:
logger.info('Reusing existing %s cert in NSS database', tag)
return

logger.info('Importing %s cert into NSS database', tag)
nssdb.add_cert(
nickname=request.systemCert.nickname,
cert_data=system_cert['data'],
cert_format='base64',
token=request.systemCert.token)
else:
system_cert['data'] = self.create_cert(subsystem, tag, request)

cert_pem = pki.nssdb.convert_cert(system_cert['data'], 'base64', 'pem').encode()
cert_obj = x509.load_pem_x509_certificate(cert_pem, backend=default_backend())
logger.info('- serial: %s', hex(cert_obj.serial_number))

logger.info('Importing %s cert into NSS database', tag)
nssdb.add_cert(
nickname=request.systemCert.nickname,
cert_data=system_cert['data'],
cert_format='base64',
token=request.systemCert.token)

# import cert into CA database
self.import_cert(subsystem, tag, request, system_cert['data'])

def setup_system_certs(self, nssdb, subsystem):

Expand Down

0 comments on commit 0a08100

Please sign in to comment.