mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
certdb: never use the -r option of certutil
The -r option makes certutil output certificates in DER. If there are multiple certificates sharing the same nickname, certutil will output them concatenated into a single blob. The blob is not a valid DER anymore and causes failures further in the code. Use the -a option instead to output the certificates in PEM and convert them to DER on demand. https://fedorahosted.org/freeipa/ticket/5117 https://fedorahosted.org/freeipa/ticket/5720 Reviewed-By: David Kupka <dkupka@redhat.com>
This commit is contained in:
committed by
Martin Basti
parent
fb3a5d5a9c
commit
54a59475f3
@@ -425,19 +425,17 @@ class NSSDatabase(object):
|
||||
"Setting trust on %s failed" % root_nickname)
|
||||
|
||||
def get_cert(self, nickname, pem=False):
|
||||
args = ['-L', '-n', nickname]
|
||||
if pem:
|
||||
args.append('-a')
|
||||
else:
|
||||
args.append('-r')
|
||||
args = ['-L', '-n', nickname, '-a']
|
||||
try:
|
||||
result = self.run_certutil(args, capture_output=pem)
|
||||
result = self.run_certutil(args, capture_output=True)
|
||||
except ipautil.CalledProcessError:
|
||||
raise RuntimeError("Failed to get %s" % nickname)
|
||||
if pem:
|
||||
return result.output
|
||||
else:
|
||||
return result.raw_output
|
||||
cert = result.output
|
||||
if not pem:
|
||||
(cert, start) = find_cert_from_txt(cert, start=0)
|
||||
cert = x509.strip_header(cert)
|
||||
cert = base64.b64decode(cert)
|
||||
return cert
|
||||
|
||||
def has_nickname(self, nickname):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user