POST Certificates Recover

The POST /Certificates/Recover operation recovers or downloads a certificate with private keyClosed Private keys are used in cryptography (symmetric and asymmetric) to encrypt or sign content. In asymmetric cryptography, they are used together in a key pair with a public key. The private or secret key is retained by the key's creator, making it highly secure.. For certificates that are available for key recovery from the Microsoft CAClosed A certificate authority (CA) is an entity that issues digital certificates. Within Keyfactor Command, a CA may be a Microsoft CA or a Keyfactor gateway to a cloud-based or remote CA., the certificate is recovered from the CA. For certificates with a private key stored in Keyfactor Command, the certificate is downloaded from Keyfactor Command. On success, the operation returns HTTP 200 OK with  a base-64-encoded representation of the certificate and private key, including optional certificate chain, in JKSClosed A Java KeyStore (JKS) is a file containing security certificates with matching private keys. They are often used by Java-based applications for authentication and encryption., PEMClosed A PEM format certificate file is a Base64-encoded certificate. Since it's presented in ASCII, you can open it in any text editor. PEM certificates always begin and end with entries like ---- BEGIN CERTIFICATE---- and ----END CERTIFICATE----. PEM certificates can contain a single certificate or a full certificate chain and may contain a private key. In general, extensions of .cer and .crt are certificate files with no private key, .key is a separate private key file, and .pem is both a certificate and private key. or PFXClosed A PFX file (personal information exchange format), also known as a PKCS #12 archive, is a single, password-protected certificate archive that contains both the public and matching private key and, optionally, the certificate chain. It is a common format for Windows servers. format. For certificates without private keys in DERClosed A DER format certificate file is a DER-encoded binary certificate. It contains a single certificate and does not support storage of private keys. It sometimes has an extension of .der but is often seen with .cer or .crt., PEM or P7BClosed A PKCS #7 format certificate file is a Base64-encoded certificate. Since it's presented in ASCII, you can open it in any text editor. PKCS #7 certificates always begin and end with entries that look something like ---- BEGIN CERTIFICATE---- and ----END CERTIFICATE----. Unlike PEM files, PKCS #7 files can contain only a certificate and its certificate chain but NOT its private key. Extensions of .p7b or .p7c are usually seen on certificate files of this format. format, use the POST Certificates Download operation.

Tip:  CA-level key recovery is supported for Microsoft CAs (either directly or with a CA ConnectorClosed The Keyfactor CA Connector is installed in the customer environment to provide a connection between a CA and Keyfactor Command when a direct connection is not possible. It is supported on both Windows and Linux and has versions for Microsoft (Windows only) or EJBCA CAs. Client) to allow recovery of private keys for certificates enrolled outside of Keyfactor Command. CA-level key archiving is not supported for enrollments done through Keyfactor Command. CA-level key recovery is not supported for Microsoft CAs when using Keyfactor Command installed in containers under Kubernetes or for EJBCA CAs. For enrollments done through Keyfactor Command for either Microsoft or EJBCA CAs, use Keyfactor Command private key retention (see Private Key Retention).
Tip:  The following permissions (see Security Roles and Claims) are required to use this feature:
/certificates/collections/private_key/read/
OR
/certificates/collections/private_key/read/#/
OR
/certificate_stores/private_key/read/
OR
/certificate_stores/private_key/read/#/

Permissions for certificates can be set at the system-wide or resource-specific level. The appropriate level depends on how the certificates are accessed. See Certificate CollectionClosed The certificate search function allows you to query the Keyfactor Command database for certificates from any available source based on any criteria of the certificates and save the results as a collection that will be available in other places in the Management Portal (for example expiration alerts and certain reports). Permissions and Application Permissions for more information.

In permission strings, # represents a specific resource identifier. In /certificates/collections/ permission strings it refers to a certificate collection ID (for example, CollectionId) and in /certificate_stores/ permission strings it refers to a certificate store application ID (for example, containerId).

Table 317: POST Certificates Recover Input Parameters

Name In

Description

CertID Body

Required in some cases.  An integer indicating the Keyfactor Command reference ID of the certificate to retrieve.

One of the following is required:

  • CertID
  • Thumbprint

  • SerialNumber and IssuerDN

ChainOrder Body A string indicating the order in which the certificate chain should be returned if IncludeChain is set to True. Supported values are EndEntityFirst or RootFirst.
CollectionId Query

An optional integer that specifies the certificate collection (CollectionId) to validate whether the user has sufficient permissions to perform the action. If a CollectionId is not provided, the user must have appropriate permissions granted system-wide or via certificate store applications.

Providing a CollectionId allows the system to check the user's permissions at the certificate collection level. Permissions are evaluated in the following order:

  1. System-wide certificate permissions
  2. Granular certificate permissions

Use either ContainerId or CollectionId, not both. If both are specified, CollectionId takes precedence, and the ContainerId is ignored (defaults to 0).

See Certificate Collection Permissions for more information.

ContainerId Query

An optional integer that specifies the certificate store application (ContainerId) to validate whether the user has sufficient permissions to perform the action. If a ContainerId is not provided, the user must have appropriate permissions granted system-wide or via certificate collections.

Providing a ContainerId allows the system to check the user's permissions at the application level. Permissions are evaluated in the following order:

  1. System-wide certificate permissions
  2. System-wide certificate store application permissions
  3. Granular certificate store application permissions

Use either ContainerId or CollectionId, not both.

See Application Permissions for more information.

File Extension Body

A string indicating the desired file extension to use for the certificate. See also x-CertificateFormat for the desired file type. Supported values are:

  • CER: Compatible with certificate format PEM.
  • CRT: Compatible with certificate format PEM.
  • PEM: Compatible with certificate format PEM.
  • JKS: Compatible with certificate format JKS.
  • P12: Compatible with certificate format PFX.
  • PFX: Compatible with certificate format PFX.
  • ZIP: Compatible with certificate format ZIP.

The default value is based on the specified certificate format as follows:

  • Certificate format JKS = File extension JKS
  • Certificate format PEM = File extension PEM
  • Certificate format PFX = File extension PFX
  • Certificate format ZIP = File extension ZIP
FriendlyName Body

A string containing a friendly name for the downloaded certificate. This parameter is supported only when the certificate format specified in the request header is PFX. To use this parameter, the Enrollment > PFX > Allow Custom Friendly Name application setting must be turned on. If the Enrollment > PFX > Require Custom Friendly Name application setting is turned on, this field is required. For more information, see Application Settings: Enrollment Tab.

IncludeChain Body

A Boolean indicating whether to include the certificate chain with the certificate (True or False). The default is False.

Note:  Certificate chains for end-entity certificate download are constructed using the following methods, in order of priority:
  1. Trust Bundles: Keyfactor Command first attempts to build the chain using only the root certificates contained in configured trust bundles (see Trust Bundles).
  2. AIA Retrieval: If the chain cannot be build using trust bundles, Keyfactor Command attempts to retrieve issuer certificates using the AIA (Authority Information Access) extension, if present. Only HTTP and HTTPS AIA URLs are supported, and the certificates must be accessible from the Keyfactor Command server.
  3. Trusted Certificate Stores (Windows only): If the above methods fail, Keyfactor Command attempts to complete the chain using certificates in the server’s local machine Trusted Root Certification Authorities and Intermediate Certification Authorities stores.
IssuerDN Body

Required in some cases.  A string indicating the distinguished name of the issuer of the certificate to retrieve.

One of the following is required:

  • CertID
  • Thumbprint

  • SerialNumber and IssuerDN

Include Subject Header Body

A Boolean that sets whether to include the subject header in the response (True or False). The default is True.

Applies only when PEM format is selected. When set to False, the subject header line is removed from the PEM output. When set to True,the subject header line is included.

When IncludeChain is set to True, this setting applies to each certificate in the returned chain. It also applies when the private key is included.

Microsoft Target CSP Body A string indicating the optional cryptographic service provider (CSP) to associate with the certificate in the Public Key Cryptography Standard #12 (PKCS #12) key provider name attribute (OID 1.3.6.1.4.1.311.17.1). A value should only be provided here if the Enrollment > General > Allow Cryptographic Service Providers (CSPs) application setting has been enabled and only values included in the Enrollment > General > Cryptographic Service Providers (CSPs) application setting list are valid for this value (see Application Settings: Enrollment Tab).
Password Body Required. The password to set on the certificate.
RootCertificateId Body

An integer specifying the Keyfactor Command reference ID of the root certificate to use when building the certificate chain for the downloaded certificate. The root certificate must be contained in a configured trust bundle. If this value is not specified, Keyfactor Command builds the chain using the standard certificate chain building methods.

Note:  Certificate chains for end-entity certificate download are constructed using the following methods, in order of priority:
  1. Trust Bundles: Keyfactor Command first attempts to build the chain using only the root certificates contained in configured trust bundles (see Trust Bundles).
  2. AIA Retrieval: If the chain cannot be build using trust bundles, Keyfactor Command attempts to retrieve issuer certificates using the AIA (Authority Information Access) extension, if present. Only HTTP and HTTPS AIA URLs are supported, and the certificates must be accessible from the Keyfactor Command server.
  3. Trusted Certificate Stores (Windows only): If the above methods fail, Keyfactor Command attempts to complete the chain using certificates in the server’s local machine Trusted Root Certification Authorities and Intermediate Certification Authorities stores.
SerialNumber Body

Required in some cases.  A string indicating the serial number of the certificate to retrieve.

One of the following is required:

  • CertID
  • Thumbprint

  • SerialNumber and IssuerDN

Thumbprint Body

Required in some cases.  A string indicating the thumbprint of the certificate to retrieve.

One of the following is required:

  • CertID

  • Thumbprint

  • SerialNumber and IssuerDN

Use Legacy Encryption Body

A Boolean that sets whether legacy encryption should be used when downloading a certificate (True or False). Legacy encryption algorithms include PBE-SHA1-RC2-40 and PBE-SHA1-3DES. When legacy is not selected, encryption algorithms include AES-256-CBC, PBES2 with PBKDF2, and PBE-SHA1-3DES. The default is False.

This applies when the x-certificateformat is PEM, PFX or Zip.

x-certificateformat Header

The desired output format for the certificate. Supported options are:

  • JKS

    Selecting the JKS option allows you to create a Java keystore with the returned value.

  • PEM

    Output the certificate in Base64-encoded PEM format along with the private key and any optional chain certificates in a single file.

  • PFX

    Selecting the PFX option allows you to create a PKCS #12 (PFX/P12) file with the returned PKCS12Blob.

  • ZIP

    Select the Zip option when you intend to output the returned PKCS12Blob as separate PEM-encoded certificate, private key, and optional chain certificate files wrapped together in a zip file.

Table 318: POST Certificates Recover Response Data

Name

In

Description
PFX Content The Base64-encoded representation of the certificate in PEM or PFX format with the optional certificate chain. The string will need to be Base64-decoded for both PEM and PFX. This can be accomplished in a number of ways. For example, using PowerShell and a manually generated file containing just the Base64 string returned in the response (not the full response):
$b64 = Get-Content 'C:\path\to\source\file'
$targetFile = 'C:\path\to\target\file'

$bytes = [Convert]::FromBase64String($b64)
[IO.File]::WriteAllBytes($targetFile, $bytes)

Using PowerShell within the script where the full response (including two key/value pairs) is returned and placed in the variable $response:

$ResponseContent = $response.Content | ConvertFrom-Json

$targetFile = 'C:\path_to_target_file\'+$ResponseContent.FileName

$bytes = [Convert]::FromBase64String($ResponseContent.PFX)
[IO.File]::WriteAllBytes($targetFile, $bytes)

In the second case, the name provided in FileName is used for the PFX output file.

FileName Content A string containing the file name assigned for the certificate. The file name is constructed from the Subject CN and the FileExtension or default extension based on the specified x-CertificateFormat and is affected by the Allow Periods in Certificate Filenames application setting (see Application Settings: Enrollment Tab).
X-CertificateFile Headers A string containing the file name assigned for the certificate. The file name is constructed from the Subject CN and the FileExtension or default extension based on the specified x-CertificateFormat and is affected by the Allow Periods in Certificate Filenames application setting (see Application Settings: Enrollment Tab).