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

Область применения: Azure

следующие сценарии и операции:

  • Запрос сертификата Key Vault с помощью поддерживаемого издателя
  • Получение ожидающего запроса (состояние запроса "Выполняется").
  • Получение ожидающего запроса (состояние запроса "Готово").
  • Получение ожидающих запросов (состояние ожидающего запроса "Отменено" или "Сбой").
  • Получение ожидающих запросов (состояние ожидающего запроса "Удалено" или "Перезаписано").
  • Создание (или импорт) при имеющемся ожидающем запросе (состояние "Выполняется").
  • Слияние при создании ожидающего выполнения запроса с помощью издателя (например, DigiCert).
  • Запрос отмены при состоянии ожидающего запроса "Выполняется".
  • Удаление ожидающего объекта запроса.
  • Создание сертификата Key Vault вручную.
  • Слияние при создании ожидающего запроса (создание сертификата вручную).

Запрос сертификата Key Vault с помощью поддерживаемого издателя

Метод Универсальный код ресурса (URI) запроса
POST 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) запроса
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}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

GET “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": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "inProgress",
  "status_details": "…",
  "request_id": "a76827a18b63421c917da80f28e9913d"
}

Получение ожидающего запроса (состояние запроса "Готово").

Запрос

Метод Универсальный код ресурса (URI) запроса
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}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

GET “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": "{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}"
}

Получение ожидающих запросов (состояние ожидающего запроса "Отменено" или "Сбой").

Запрос

Метод Универсальный код ресурса (URI) запроса
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}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

GET “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": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "failed",
  "status_details": "",
  "request_id": "a76827a18b63421c917da80f28e9913d",
  "error": {
    "code": "<errorcode>",
    "message": "<message>"
  }
}

Примечание

Значение errorcode может быть следующим: Certificate issuer error (Ошибка, связанная с издателем сертификата) или "Запрос отклонен". Это зависит от ошибки издателя или пользователя соответственно.

Получение ожидающих запросов (состояние ожидающего запроса "Удалено" или "Перезаписано").

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

Метод Универсальный код ресурса (URI) запроса
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}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

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

Ответ

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

Создание (или импорт) при имеющемся ожидающем запросе (состояние "Выполняется").

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

Если состояние ожидающего запроса — "Выполняется", операции создания и импорта завершаются ошибкой с кодом состояния HTTP 409 (конфликт).

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

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

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

Примечание

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

Метод Универсальный код ресурса (URI) запроса
POST 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 можно получить другим способом, для завершения создания сертификата Key Vault можно выполнить операцию слияния.

Метод Универсальный код ресурса (URI) запроса
POST 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) запроса
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}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

PATCH “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": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": true,
  "status": "inProgress",
  "status_details": "…",
  "request_id": "a76827a18b63421c917da80f28e9913d"
}

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

Примечание

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

Метод Универсальный код ресурса (URI) запроса
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}&request_id=a76827a18b63421c917da80f28e9913d"

ИЛИ

DELETE “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": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "inProgress",
  "request_id": "a76827a18b63421c917da80f28e9913d",
}

Создание сертификата Key Vault вручную.

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

Метод Универсальный код ресурса (URI) запроса
POST 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) запроса
POST https://mykeyvault.vault.azure.net/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.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
		}
	}
}