Поделиться через


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

Область применения: 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",
    }
  }
}

Response

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.

Response

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

Response

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

Response

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

Response

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

Response

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
}

Response

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

Response

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

Response

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

Имя элемента Обязательное поле Тип Версия Description
x5c Да array <общие сведения о версии> Цепочка сертификатов 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
		}
	}
}