Мониторинг и администрирование процесса создания сертификатов
Область применения: 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
}
}
}