The Update Single Certificate workflow is part of the Update Certificates workflow in 7.7.2. It starts when the CertificateManager determines that an update to a Certificate assigned to a CertificateGroup is required. It is shown in Figure 19. The boxes with blue text indicate Method calls.
Figure 19 – PushManagement Update Certificate Workflow
The steps of the workflow are described in Table 24.
Table 24 – PushManagement Update Certificate Workflow Steps
Step |
Description |
Initial Conditions |
The update is triggered when the CertificateManager needs to update a Certificate as part of a larger workflow. The CertificateGroupId and CertificateTypeId are determined by the containing workflow. |
Certificate Exists? |
An existing Certificate may not be assigned to the CertificateType slot or it may not have field values that meet the requirements of the CertificateManager. If a useable Certificate does not exist a new self-signed Certificate is generated. |
CreateSelfSignedCertificate |
This Method creates a new self-signed Certificate using field values provided by the CertificateManager. This Method may not be implemented by all Servers. If this Method is available, it allows the CertificateManager to specify all of the key fields, such as the DNS names, in the Certificate. This is important when the CertificateManager configures Endpoints as described in 7.7.5. |
CreateSigningRequest |
This Method creates a new CertificateRequest that is signed with a PrivateKey owned by the Server. If requested, the Server generates a new PrivateKey but uses the field values from the existing Certificate. Some Servers may not have the resources to generate PrivateKeys. This step is skipped when this is the case. |
Request Certificate from Issuer |
The CertificateManager requests a new Certificate from the Issuer. The CertificateManager generates a PrivateKey on behalf the Server if the Server cannot generate its own PrivateKeys. |
UpdateCertificate |
This Method allows the CertificateManager to upload a new Certificate and PrivateKey (if not generated by the Server) to the Server. The Server may set the applyChangesRequired =TRUE to indicate that ApplyChanges needs to be called. |