Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
适用于:Azure
本文中概述的方案/操作包括:
- 请求一张由支持的颁发者颁发的 KV 证书
- 获取待处理的请求 - 请求状态为“进行中”
- 获取待处理请求 - 请求状态为“完成”
- 获取挂起的请求 - 挂起的请求状态为“已取消”或“失败”
- 获取挂起的请求 - 挂起的请求状态为“已删除”或“已覆盖”
- 当存在挂起请求时选择创建或导入 - 状态为“进行中”
- 在创建与颁发者(例如 DigiCert)的挂起请求时进行合并
- 当挂起请求的状态为“进行中”时,发出取消请求。
- 删除挂起的请求对象
- 手动创建 KV 证书
- 在创建挂起请求时进行合并 - 手动创建证书
请求一张由支持的颁发者颁发的 KV 证书
| 方法 | 请求 URI |
|---|---|
| POST | https://mykeyvault.vault.azure.cn/certificates/mycert1/create?api-version={api-version} |
以下示例要求密钥保管库中已有名为“mydigicert”的对象,其颁发者提供商为 DigiCert。 证书颁发者是 Azure 密钥保管库 (KV) 中一个表示为 CertificateIssuer 资源的实体。 它用于提供有关 KV 证书源的信息;颁发者名称、提供程序、凭据和其他管理详细信息。
请求
{
"policy": {
"x509_props": {
"subject": "CN=MyCertSubject1"
},
"issuer": {
"name": "mydigicert",
"cty": "OV-SSL"
}
}
}
响应
StatusCode: 202, ReasonPhrase: 'Accepted'
Location: "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
{
"id": "https://mykeyvault.vault.azure.cn/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"
}
获取待处理的请求 - 请求状态为“进行中”
| 方法 | 请求 URI |
|---|---|
| GET | https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version} |
请求
获取 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
或者
获取 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}"
注释
如果在查询中指定 了request_id ,它将像筛选器一样。 如果查询和挂起对象中的 request_id 不同,则返回 http 状态代码 404。
响应
StatusCode: 200, ReasonPhrase: 'OK'
{
"id": "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending",
"issuer": {
"name": "{issuer-name}"
},
"csr": "MIICq......DD5Lp5cqXg==",
"cancellation_requested": false,
"status": "inProgress",
"status_details": "…",
"request_id": "a76827a18b63421c917da80f28e9913d"
}
获取待处理请求 - 请求状态为“完成”
请求
| 方法 | 请求 URI |
|---|---|
| GET | https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version} |
获取 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
或者
获取 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}"
响应
StatusCode: 200, ReasonPhrase: 'OK'
{
"id": "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending",
"issuer": {
"name": "{issuer-name}"
},
"csr": "MIICq......DD5Lp5cqXg==",
"cancellation_requested": false,
"status": "completed",
"request_id": "a76827a18b63421c917da80f28e9913d",
"target": "https://mykeyvault.vault.azure.cn/certificates/mycert1?api-version={api-version}"
}
获取挂起的请求 - 挂起的请求状态为“已取消”或“失败”
请求
| 方法 | 请求 URI |
|---|---|
| GET | https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version} |
获取 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
或者
获取 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}"
响应
StatusCode: 200, ReasonPhrase: 'OK'
{
"id": "https://mykeyvault.vault.azure.cn/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>"
}
}
注释
根据颁发者或用户错误, 错误代码 的值可以是“证书颁发者错误”或“请求被拒绝”。
获取挂起的请求 - 挂起的请求状态为“已删除”或“已覆盖”
当挂起对象的状态不是 inProgress时,可以通过创建/导入操作删除或覆盖该对象。
| 方法 | 请求 URI |
|---|---|
| GET | https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version} |
请求
获取 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
或者
获取 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}"
响应
StatusCode: 404, ReasonPhrase: 'Not Found'
{
"error": {
"code": "PendingCertificateNotFound",
"message": "…"
}
}
当存在挂起请求时选择创建或导入 - 状态为“进行中”
挂起的对象有四种可能的状态:“进行中”、“已取消”、“已失败”或“已完成”。
当挂起请求的状态为“进行中”时,创建和导入操作将失败,返回 HTTP 状态代码 409(冲突)。
若要解决冲突,请执行以下操作:
如果正在手动创建证书,可以通过对挂起的对象执行合并或删除来完成 KV 证书。
如果证书是由某个颁发者创建的,可以等待证书成功创建、失败或被取消。 或者,可以删除挂起的对象。
注释
删除挂起的对象可能会,也可能不会与提供程序一起取消 x509 证书请求。
| 方法 | 请求 URI |
|---|---|
| POST | https://mykeyvault.vault.azure.cn/certificates/mycert1/create?api-version={api-version} |
请求
{
"policy": {
"x509_props": {
"subject": "CN=MyCertSubject1"
},
"issuer": {
"name": "mydigicert"
}
}
}
响应
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."
}
}
当与签发者一起创建挂起请求时进行合并
当使用颁发者创建待定对象时,不允许合并,但当其状态为 inProgress时允许合并。
如果出于某种原因创建 x509 证书的请求失败或取消,并且可以通过带外方式检索 x509 证书,则可以执行合并操作来完成 KV 证书。
| 方法 | 请求 URI |
|---|---|
| POST | https://mykeyvault.vault.azure.cn/certificates/mycert1/pending/merge?api-version={api-version} |
请求
{
"x5c": [ "MIICxTCCAbi………………………trimmed for brevitiy……………………………………………EPAQj8=" ]
}
响应
StatusCode: 403, ReasonPhrase: 'Forbidden'
{
"error": {
"code": "Forbidden",
"message": "Merge is forbidden on pending object created with issuer : <issuer-name> while it is in progess."
}
}
当挂起请求的状态为“进行中”时,发出取消请求。
只能请求取消。 可能会取消请求,也可能不会取消。 如果请求不是“inProgress”,则返回 http 状态 400(错误请求)。
| 方法 | 请求 URI |
|---|---|
| 补丁 | https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version} |
请求
补丁 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
或者
补丁 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}"
{
"cancellation_requested": true
}
响应
StatusCode: 200, ReasonPhrase: 'OK'
{
"id": "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending",
"issuer": {
"name": "{issuer-name}"
},
"csr": "MIICq......DD5Lp5cqXg==",
"cancellation_requested": true,
"status": "inProgress",
"status_details": "…",
"request_id": "a76827a18b63421c917da80f28e9913d"
}
删除挂起的请求对象
注释
删除挂起的对象可能会也可能不会导致与提供程序的 x509 证书请求被取消。
| 方法 | 请求 URI |
|---|---|
| 删除 | https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version} |
请求
删除 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
或者
删除 "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}"
响应
StatusCode: 200, ReasonPhrase: 'OK'
{
"id": "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending",
"issuer": {
"name": "{issuer-name}"
},
"csr": "MIICq......DD5Lp5cqXg==",
"cancellation_requested": false,
"status": "inProgress",
"request_id": "a76827a18b63421c917da80f28e9913d",
}
手动创建 KV 证书
可以通过手动创建过程创建使用所选 CA 颁发的证书。 将颁发者的名称设置为“未知”或未指定颁发者字段。
| 方法 | 请求 URI |
|---|---|
| POST | https://mykeyvault.vault.azure.cn/certificates/mycert1/create?api-version={api-version} |
请求
{
"policy": {
"x509_props": {
"subject": "CN=MyCertSubject1"
},
"issuer": {
"name": "Unknown"
}
}
}
响应
StatusCode: 202, ReasonPhrase: 'Accepted'
Location: "https://mykeyvault.vault.azure.cn/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
{
"id": "https://mykeyvault.vault.azure.cn/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"
}
在创建挂起请求时进行合并 - 手动创建证书
| 方法 | 请求 URI |
|---|---|
| POST | https://mykeyvault.vault.azure.cn/certificates/mycert1/pending/merge?api-version={api-version} |
请求
{
"x5c": [ "MIICxTCCAbi………………………trimmed for brevitiy……………………………………………EPAQj8=" ]
}
| 元素名称 | 必需 | 类型 | 版本 | 说明 |
|---|---|---|---|---|
| X5C | 是的 | 数组 | <引入版本> | X509 证书链作为 base 64 字符串数组。 |
响应
StatusCode: 201, ReasonPhrase: 'Created'
Location: "https://mykeyvault.vault.azure.cn/certificates/mycert1?api-version={api-version}"
{
"id": "https mykeyvault.vault.azure.cn/certificates/mycert1/f366e1a9dd774288ad84a45a5f620352",
"kid": "https:// mykeyvault.vault.azure.cn/keys/mycert1/f366e1a9dd774288ad84a45a5f620352",
"sid": " mykeyvault.vault.azure.cn/secrets/mycert1/f366e1a9dd774288ad84a45a5f620352",
"cer": "……de34534……",
"x5t": "n14q2wbvyXr71Pcb58NivuiwJKk",
"attributes": {
"enabled": true,
"exp": 1530394215,
"nbf": 1435699215,
"created": 1435699919,
"updated": 1435699919
},
"pending": {
"id": "https:// mykeyvault.vault.azure.cn/certificates/mycert1/pending"
},
"policy": {
"id": "https:// mykeyvault.vault.azure.cn/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
}
}
}