Surveiller et gérer la création de certificatsMonitor and manage certificate creation

S’applique à : AzureApplies To: Azure

Scénarios/Opérations décrits dans cet article :The scenarios / operations outlined in this article are:

  • Demander un certificat Key Vault avec un émetteur pris en chargeRequest a KV Certificate with a supported issuer
  • Obtenir une demande en attente : état de la demande « inProgress »Get pending request - request status is "inProgress"
  • Obtenir une demande en attente : état de la demande « complete »Get pending request - request status is "complete"
  • Obtenir une demande en attente : état de la demande en attente « canceled » ou « failed »Get pending request - pending request status is "canceled" or "failed"
  • Obtenir une demande en attente : état de la demande en attente « deleted » ou « overwritten »Get pending request - pending request status is "deleted" or "overwritten"
  • Créer (ou importer) lorsqu’une demande en attente existe : état « inProgress »Create (or Import) when pending request exists - status is "inProgress"
  • Procéder à une fusion lorsqu’une demande en attente est créée avec un émetteur (DigiCert, par exemple)Merge when pending request is created with an issuer (DigiCert, for example)
  • Demander une annulation alors que l’état de la demande en attente est « inProgress »Request a cancellation while the pending request status is "inProgress"
  • Supprimer un objet de demande en attenteDelete a pending request object
  • Créer manuellement un certificat Key VaultCreate a KV certificate manually
  • Procéder à une fusion lors de la création d’une demande en attente : création manuelle d’un certificatMerge when a pending request is created - manual certificate creation

Demander un certificat Key Vault avec un émetteur pris en chargeRequest a KV Certificate with a supported issuer

MéthodeMethod URI de demandeRequest URI
POSTPOST https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version}

Les exemples suivants nécessitent qu’un objet nommé « mydigicert » soit déjà disponible dans votre coffre de clés, le fournisseur de l’émetteur étant DigiCert.The following examples require an object named "mydigicert" to already be available in your key vault with the issuer provider as DigiCert. L’émetteur du certificat est une entité représentée dans Azure Key Vault (KV) en tant que ressource CertificateIssuer.The certificate issuer is an entity represented in Azure Key Vault (KV) as a CertificateIssuer resource. Il fournit des informations sur la source d’un certificat KV, ainsi que le nom de l’émetteur, le fournisseur, les informations d’identification et d’autres détails administratifs.It is used to provide information about the source of a KV certificate; issuer name, provider, credentials, and other administrative details.

RequêteRequest

{
  "policy": {
    "x509_props": {
      "subject": "CN=MyCertSubject1"
    },
    "issuer": {
      "name": "mydigicert",
      "cty": "OV-SSL",
    }
  }
}

responseResponse

StatusCode: 202, ReasonPhrase: 'Accepted'
Location: “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "mydigicert"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "InProgress",
  "status_details": "Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later",
  "request_id": "a76827a18b63421c917da80f28e9913d"
}

Obtenir une demande en attente : état de la demande « inProgress »Get pending request - request status is "inProgress"

MéthodeMethod URI de demandeRequest URI
GETGET https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

RequêteRequest

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OROR

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Notes

Si l’élément request_id est spécifié dans la requête, il fait office de filtre.If request_id is specified in the query, it acts like a filter. Si les éléments request_id de la requête et de l’objet en attente sont différents, un code d’état HTTP 404 est retourné.If the request_id in the query and in the pending object are different, an http status code of 404 is returned.

responseResponse

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "inProgress",
  "status_details": "…",
  "request_id": "a76827a18b63421c917da80f28e9913d"
}

Obtenir une demande en attente : état de la demande « complete »Get pending request - request status is "complete"

RequêteRequest

MéthodeMethod URI de demandeRequest URI
GETGET https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OROR

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

responseResponse

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "completed",
  "request_id": "a76827a18b63421c917da80f28e9913d",
  "target": “https://mykeyvault.vault.azure.net/certificates/mycert1?api-version={api-version}"
}

Obtenir une demande en attente : état de la demande en attente « canceled » ou « failed »Get pending request - pending request status is "canceled" or "failed"

RequêteRequest

MéthodeMethod URI de demandeRequest URI
GETGET https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OROR

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

responseResponse

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "failed",
  "status_details": "",
  "request_id": "a76827a18b63421c917da80f28e9913d",
  "error": {
    "code": "<errorcode>",
    "message": "<message>"
  }
}

Notes

la valeur errorcode peut être « Certificate issuer error » (Erreur de l’émetteur de certificat) ou « Request rejected » (Demande rejetée) selon que l’erreur relève de l’émetteur ou de l’utilisateur.The value of the errorcode can be "Certificate issuer error" or "Request rejected" based on issuer or user error respectively.

Obtenir une demande en attente : état de la demande en attente « deleted » ou « overwritten »Get pending request - pending request status is "deleted" or "overwritten"

Un objet en attente peut être supprimé ou remplacé par une opération de création/importation lorsque son état n’est pas « inProgress ».A pending object can be deleted or overwritten by a create/import operation when its status is not "inProgress."

MéthodeMethod URI de demandeRequest URI
GETGET https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

RequêteRequest

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OROR

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

responseResponse

StatusCode: 404, ReasonPhrase: 'Not Found'
{
  "error": {
    "code": "PendingCertificateNotFound",
    "message": "…"
  }
}

Créer (ou importer) lorsqu’une demande en attente existe : état « inProgress »Create (or Import) when pending request exists - status is "inProgress"

Quatre états sont possibles pour un objet en attente : « inprogress », « canceled », « failed » ou « completed ».A pending object has four possible states; "inprogress", "canceled", "failed", or "completed."

Si l’état d’une demande en attente est « inprogress », les opérations de création (et d’importation) échouent avec un code d’état HTTP 409 (conflit).When a pending request's state is "inprogress", create (and import) operations will fail with an http status code of 409 (conflict).

Pour résoudre un conflit :To fix a conflict:

  • Si le certificat Key Vault est créé manuellement, vous pouvez terminer sa création en effectuant une fusion ou une suppression de l’objet en attente.If the certificate is being manually created, you can either complete the KV certificate by doing a merge or delete on the pending object.

  • Si le certificat est créé avec un émetteur, vous pouvez patienter jusqu’à son achèvement, son échec ou son annulation.If the certificate is being created with an issuer, you can wait until the certificate completes, fails or is canceled. Vous pouvez également supprimer l’objet en attente.Alternatively, you can delete the pending object.

Notes

La suppression d’un objet en attente peut ou non annuler la demande de certificat X509 auprès du fournisseur.Deleting a pending object may or may not cancel the x509 certificate request with the provider.

MéthodeMethod URI de demandeRequest URI
POSTPOST https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version}

RequêteRequest

{
  "policy": {
    "x509_props": {
      "subject": "CN=MyCertSubject1"
    },
    "issuer": {
      "name": "mydigicert"
    }
  }
}

responseResponse

StatusCode: 409, ReasonPhrase: 'Conflict'
{
  "error": {
    "code": "Forbidden",
    "message": "A new key vault certificate can not be created or imported while a pending key vault certificate's status is inProgress."
  }
}

Procéder à une fusion lorsqu’une demande en attente est créée avec un émetteurMerge when pending request is created with an issuer

La fusion n’est pas autorisée quand un objet en attente est créé avec un émetteur, mais elle l’est lorsque son état est « inProgress ».Merge is not allowed when a pending object is created with an issuer but is allowed when its state is "inProgress."

Si la demande de création du certificat X509 échoue ou est annulée pour une raison quelconque et si un certificat X509 peut être récupéré par des moyens hors bande, une opération de fusion peut être effectuée pour terminer la création du certificat Key Vault.If the request to create the x509 certificate fails or cancels for some reason, and if an x509 certificate can be retrieved by out-of-band means, a merge operation can be done to complete the KV certificate.

MéthodeMethod URI de demandeRequest URI
POSTPOST https://mykeyvault.vault.azure.net/certificates/mycert1/pending/merge?api-version={api-version}

RequêteRequest

{
  "x5c": [ "MIICxTCCAbi………………………trimmed for brevitiy……………………………………………EPAQj8=" ]
}

responseResponse

StatusCode: 403, ReasonPhrase: 'Forbidden'
{
  "error": {
    "code": "Forbidden",
    "message": "Merge is forbidden on pending object created with issuer : <issuer-name> while it is in progess."
  }
}

Demander une annulation alors que l’état de la demande en attente est « inProgress »Request a cancellation while the pending request status is "inProgress"

Une annulation peut uniquement être demandée.A cancellation can only be requested. Une demande peut ou non être annulée.A request may or may not be canceled. Si l’état d’une demande n’est pas « inProgress », une erreur d’état HTTP 400 (demande incorrecte) est retournée.If a request is not "inProgress", an http status of 400 (Bad Request) is returned.

MéthodeMethod URI de demandeRequest URI
PATCHPATCH https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

RequêteRequest

PATCH “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"PATCH “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OROR

PATCH “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"PATCH “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

{
  "cancellation_requested": true
}

responseResponse

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": true,
  "status": "inProgress",
  "status_details": "…",
  "request_id": "a76827a18b63421c917da80f28e9913d"
}

Supprimer un objet de demande en attenteDelete a pending request object

Notes

La suppression de l’objet en attente peut ou non annuler la demande de certificat X509 auprès du fournisseur.Deleting the pending object may or may not cancel the x509 certificate request with the provider.

MéthodeMethod URI de demandeRequest URI
SuppressionDELETE https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

RequêteRequest

DELETE “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"DELETE “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OROR

DELETE “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"DELETE “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

responseResponse

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "inProgress",
  "request_id": "a76827a18b63421c917da80f28e9913d",
}

Créer manuellement un certificat Key VaultCreate a KV certificate manually

Vous pouvez créer un certificat émis par une autorité de certification de votre choix via un processus de création manuelle.You can create a certificate issued with a CA of your choice through a manual creation process. Définissez le nom de l’émetteur sur « Unknown » ou ne spécifiez pas le champ de l’émetteur.Set the name of the issuer to “Unknown” or do not specify the issuer field.

MéthodeMethod URI de demandeRequest URI
POSTPOST https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version}

RequêteRequest

{
  "policy": {
    "x509_props": {
      "subject": "CN=MyCertSubject1"
    },
    "issuer": {
      "name": "Unknown"
    }
  }
}

responseResponse

StatusCode: 202, ReasonPhrase: 'Accepted'
Location: “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "Unknown"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "status": "inProgress",
  "status_details": "Pending certificate created. Please Perform Merge to complete the request.",
  "request_id": "a76827a18b63421c917da80f28e9913d"
}

Procéder à une fusion lors de la création d’une demande en attente : création manuelle d’un certificatMerge when a pending request is created - manual certificate creation

MéthodeMethod URI de demandeRequest URI
POSTPOST https://mykeyvault.vault.azure.net/certificates/mycert1/pending/merge?api-version={api-version}

RequêteRequest

{
  "x5c": [ "MIICxTCCAbi………………………trimmed for brevitiy……………………………………………EPAQj8=" ]
}

Nom de l'élément Obligatoire Type Version DescriptionDescription
x5cx5c OuiYes tableauarray <introducing version> Chaîne d’approbation X509 en tant que table de chaînes en base 64.X509 certificate chain as base 64 string array.

responseResponse

StatusCode: 201, ReasonPhrase: 'Created'
Location: “https://mykeyvault.vault.azure.net/certificates/mycert1?api-version={api-version}"
{
    "id": "https mykeyvault.vault.azure.net/certificates/mycert1/f366e1a9dd774288ad84a45a5f620352",
    "kid": "https:// mykeyvault.vault.azure.net/keys/mycert1/f366e1a9dd774288ad84a45a5f620352",
    "sid": " mykeyvault.vault.azure.net/secrets/mycert1/f366e1a9dd774288ad84a45a5f620352",
    "cer": "……de34534……",
    "x5t": "n14q2wbvyXr71Pcb58NivuiwJKk",
    "attributes": {
        "enabled": true,
        "exp": 1530394215,
        "nbf": 1435699215,
        "created": 1435699919,
        "updated": 1435699919
    },
    "pending": {
        "id": "https:// mykeyvault.vault.azure.net/certificates/mycert1/pending"
    },
    "policy": {
        "id": "https:// mykeyvault.vault.azure.net/certificates/mycert1/policy",
        "key_props": {
            "exportable": false,
            "kty": "RSA",
            "key_size": 2048,
            "reuse_key": false
        },
        "secret_props": {
            "contentType": "application/x-pkcs12"
        },
        "x509_props": {
            "subject": "CN=Mycert1",
            "ekus": ["1.3.6.1.5.5.7.3.1", "1.3.6.1.5.5.7.3.2"],
            "validity_months": 12
        },
        "lifetime_actions": [{
            "trigger": {
                "lifetime_percentage": 80
            },
            "action": {
                "action_type": "EmailContacts"
            }
        }],
        "issuer": {
            "name": "Unknown"
        },
        "attributes": {
            "enabled": true,
            "created": 1435699811,
            "updated": 1435699811
        }
    }
}