Мониторинг создания сертификатов и управление ими

Ниже приведены сценарии и операции, описанные в этой статье:

  • Запрос сертификата KV от поддерживаемого удостоверяющего центра
  • Получение ожидающего запроса — статус запроса "в процессе выполнения"
  • Получение ожидающего запроса — состояние запроса — "завершено"
  • Получение ожидающего запроса— состояние ожидающего запроса "отменено" или "не выполнено"
  • Получение ожидающего запроса — состояние ожидающего запроса "удалено" или "перезаписано"
  • Создание (или импорт) при наличии ожидающего запроса — состояние «в процессе»
  • Слияние осуществляется при создании ожидающего запроса с поставщиком сертификатов (например, DigiCert)
  • Запросите отмену, пока статус ожидающего запроса — «в процессе выполнения».
  • Удалите объект ожидающего запроса
  • Вы можете создать сертификат KV вручную.
  • Слияние при создании ожидающего запроса — создание сертификата вручную

Запрос сертификата KV от поддерживаемого удостоверяющего центра

Метод Запрос URI
ПОСТ https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version}

В следующих примерах требуется, чтобы объект с именем "mydigicert" уже был доступен в хранилище ключей и указан поставщик DigiCert. Издатель сертификата — это сущность, представленная в Azure Key Vault (KV) в качестве ресурса CertificateIssuer. Он используется для предоставления сведений об источнике сертификата KV; Имя издателя, поставщик, учетные данные и другие административные сведения.

Просьба

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

Ответ

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"
}

Получение ожидающего запроса — статус запроса "в процессе выполнения"

Метод Запрос URI
ПОЛУЧАЙ https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

Просьба

ПОЛУЧИТЬ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

ПОЛУЧИТЬ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Замечание

Если request_id указан в запросе, он действует как фильтр. Если request_id в запросе и в ожидающих объектах отличаются, возвращается код состояния HTTP 404.

Ответ

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

Получение ожидающего запроса — состояние запроса — "завершено"

Просьба

Метод Запрос URI
ПОЛУЧАЙ https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

ПОЛУЧИТЬ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

ПОЛУЧИТЬ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Ответ

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

Получение ожидающего запроса— состояние ожидающего запроса "отменено" или "не выполнено"

Просьба

Метод Запрос URI
ПОЛУЧАЙ https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

ПОЛУЧИТЬ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

ПОЛУЧИТЬ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Ответ

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "mydigicert"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "failed",
  "status_details": "",
  "request_id": "a76827a18b63421c917da80f28e9913d",
  "error": {
    "code": "Certificate issuer error",
    "message": "The issuer encountered an error processing the certificate request."
  }
}

Замечание

Значение кода ошибки может быть "Ошибка издателя сертификатов" или "Запрос отклонен" на основе ошибки издателя или пользователя соответственно.

Получение ожидающего запроса — состояние ожидающего запроса "удалено" или "перезаписано"

Ожидающий объект может быть удален или перезаписан операцией создания или импорта, если его состояние не inProgressявляется.

Метод Запрос URI
ПОЛУЧАЙ https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

Просьба

ПОЛУЧИТЬ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

ПОЛУЧИТЬ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Ответ

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

Создание (или импорт) при наличии ожидающего запроса — состояние «в процессе»

Ожидающий объект имеет четыре возможных состояния: "в процессе", "отменено", "не удалось" или "завершено".

Если состояние ожидающего запроса находится в состоянии 'inprogress', операции создания (и импорта) завершаются сбоем с кодом состояния HTTP 409 (конфликт).

Чтобы устранить конфликт, выполните следующие действия.

  • Если сертификат создается вручную, можно либо завершить сертификат KV, выполнив объединение или удаление объекта, находящегося в ожидании.

  • Если сертификат создается с издателем, вы можете ждать завершения сертификата, завершить работу или отменить его. Кроме того, можно удалить ожидающий объект.

Замечание

Удаление ожидающего объекта может или не может отменить запрос сертификата x509 с поставщиком.

Метод Запрос URI
ПОСТ https://mykeyvault.vault.azure.net/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
ПОСТ https://mykeyvault.vault.azure.net/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.net/certificates/mycert1/pending?api-version={api-version}

Просьба

ИСПРАВЛЕНИЕ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

ИСПРАВЛЕНИЕ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

{
  "cancellation_requested": true
}

Ответ

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

Удалите объект ожидающего запроса

Замечание

Удаление ожидающего объекта может или не может отменить запрос сертификата x509 с поставщиком.

Метод Запрос URI
Удалить https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

Просьба

УДАЛИТЬ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

УДАЛИТЬ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Ответ

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

Вы можете создать сертификат KV вручную.

Вы можете создать сертификат, выданный цС вашего выбора, с помощью процесса создания вручную. Задайте имя издателя значение "Неизвестно" или не укажите поле издателя.

Метод Запрос URI
ПОСТ https://mykeyvault.vault.azure.net/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.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"
}

Слияние при создании ожидающего запроса — создание сертификата вручную

Метод Запрос URI
ПОСТ https://mykeyvault.vault.azure.net/certificates/mycert1/pending/merge?api-version={api-version}

Просьба

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

Имя элемента Обязательно Тип Версия Описание
x5c Да массив <представление версии> Цепочка сертификатов X509 в виде массива строк в кодировке Base64.

Ответ

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
		}
	}
}