Certificates stored and managed by CCM
This feature was deprecated in API level 33 with Knox SDK v3.7. For more information, see Deprecation of TIMA/CCM Keystore support.
This topic explains how an MDM admin should configure a device so that the following functionality is enabled:
- CCM stores and manages the certificate for APP1
- CCM CSR generates the certificate, and a remote server handled by an enrollment procedure signs it
CCM Procedure:
-
Get an instance of
ClientCertificateManagerPolicyto use the CCM APIs:EnterpriseKnoxManager ekm = EnterpriseKnoxManager.getInstance(); KnoxContainerManager kcm = ekm.getKnoxContainerManager(Context, containerID); ClientCertificateManager clientCertificateManager = kcm.getClientCertificateManagerPolicy(); -
Request a SmartCard token by using the
setCCMProfileAPI. This API allocates a SmartCard token in TrustZone for the caller. The input parameterCCMProfilehas configuration fields:- An access control method
- A package allowlist which can access the SmartCard token.
Note that the caller must have a Knox license and should be an admin.
boolean result = clientCertificateManager.setCCMProfile(CCMProfile profile); -
Set the CSR template used for generating a new CSR. Use the `SRProfile to specify the values for the CSR fields – Common Name, Domain Name, and so on.
boolean result = clientCertificateManager.setCSRProfile(CSRProfile); -
Generate the CSR using the template set in Step 3. Note that
templateNameis the name used to set the CSR profile (CSRProfilZ.templateName);csAliasis the certificate alias for the generated key pair; andchallengePasswordis required for protocols like SCEP.byte[] csr = clientCertificateManager.generateCSRUsingTemplate("templateName", "csrAlias", "challengePassword"); -
Enroll the certificate with the CA/Enrollment Server using the generated CSR.
-
On receiving an enrolled certificate from the server, perform these steps:
- A. Install the enrolled certificate in CCM using the
installCertificateAPI. This is a generic API for installing a certificate. - B. Install the CSR response, by setting
CertificateProfile.isCSRResponseto TRUE so that the CSR response is matched with the generated private key in TrustZone. Ensure thatCertificateProfile.aliashas the same value specified as when generating the CSR (see Step 4). - C. Specify the access control to the certificate being installed using
CertificateProfilefields to add packages to the allowlist.
- A. Install the enrolled certificate in CCM using the
Note that privateKeyPassword is required only if you are installing a certificate with a private key and it is not required for CSR response.
boolean result = clientCertificateManager.installCertificate(CertificateProfile, certificateBuffer, "privateKeyPassword");
On this page
Is this page helpful?