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


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

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

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

  • Запрос сертификата 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": "{issuer-name}"
  },
  "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": "{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
ПОЛУЧАЙ 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": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "failed",
  "status_details": "",
  "request_id": "a76827a18b63421c917da80f28e9913d",
  "error": {
    "code": "<errorcode>",
    "message": "<message>"
  }
}

Замечание

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

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

Ожидающий объект может быть удален или перезаписан операцией создания или импорта, если его состояние не 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

Отмену можно запросить только. Запрос может быть отменен или не может быть отменен. Если запрос не является "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": "{issuer-name}"
  },
  "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": "{issuer-name}"
  },
  "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
		}
	}
}