Monitorowanie tworzenia certyfikatów i zarządzanie tym procesem
Dotyczy: Azure
Scenariusze/operacje opisane w tym artykule są następujące:
- Żądanie certyfikatu KV z obsługiwanym wystawcą
- Żądanie oczekujące — stan żądania to "inProgress"
- Pobieranie oczekującego żądania — stan żądania to "complete"
- Żądanie oczekujące — stan oczekującego żądania to "anulowane" lub "niepowodzenie"
- Pobieranie oczekującego żądania — stan oczekującego żądania to "usunięte" lub "zastąpione"
- Tworzenie (lub importowanie), gdy istnieje oczekujące żądanie — stan to "inProgress"
- Scalanie po utworzeniu oczekującego żądania przy użyciu wystawcy (na przykład DigiCert)
- Żądanie anulowania, gdy stan oczekującego żądania to "inProgress"
- Usuwanie oczekującego obiektu żądania
- Ręczne tworzenie certyfikatu KV
- Scalanie po utworzeniu oczekującego żądania — ręczne tworzenie certyfikatu
Żądanie certyfikatu KV z obsługiwanym wystawcą
Metoda | Identyfikator URI żądania |
---|---|
POST | https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version} |
Poniższe przykłady wymagają, aby obiekt o nazwie "mydigicert" był już dostępny w magazynie kluczy z dostawcą wystawcy jako DigiCert. Wystawca certyfikatu jest jednostką reprezentowaną w usłudze Azure Key Vault (KV) jako zasób CertificateIssuer. Służy do dostarczania informacji o źródle certyfikatu KV; nazwa wystawcy, dostawca, poświadczenia i inne szczegóły administracyjne.
Żądanie
{
"policy": {
"x509_props": {
"subject": "CN=MyCertSubject1"
},
"issuer": {
"name": "mydigicert",
"cty": "OV-SSL",
}
}
}
Reakcja
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"
}
Żądanie oczekujące — stan żądania to "inProgress"
Metoda | Identyfikator URI żądania |
---|---|
GET | https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version} |
Żądanie
POBIERZ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
LUB
POBIERZ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"
Uwaga
Jeśli request_id jest określona w zapytaniu, działa jak filtr. Jeśli request_id w zapytaniu i w oczekującym obiekcie są inne, zwracany jest kod stanu HTTP 404.
Reakcja
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"
}
Pobieranie oczekującego żądania — stan żądania to "complete"
Żądanie
Metoda | Identyfikator URI żądania |
---|---|
GET | https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version} |
POBIERZ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
LUB
POBIERZ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"
Reakcja
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}"
}
Żądanie oczekujące — stan oczekującego żądania to "anulowane" lub "niepowodzenie"
Żądanie
Metoda | Identyfikator URI żądania |
---|---|
GET | https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version} |
POBIERZ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
LUB
POBIERZ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"
Reakcja
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>"
}
}
Uwaga
Wartość kodu błędu może być "Błąd wystawcy certyfikatu" lub "Żądanie odrzucone" odpowiednio na podstawie wystawcy lub błędu użytkownika.
Pobieranie oczekującego żądania — stan oczekującego żądania to "usunięte" lub "zastąpione"
Oczekujący obiekt można usunąć lub zastąpić przez operację tworzenia/importowania, gdy jego stan nie inProgress
jest .
Metoda | Identyfikator URI żądania |
---|---|
GET | https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version} |
Żądanie
POBIERZ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
LUB
POBIERZ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"
Reakcja
StatusCode: 404, ReasonPhrase: 'Not Found'
{
"error": {
"code": "PendingCertificateNotFound",
"message": "…"
}
}
Tworzenie (lub importowanie), gdy istnieje oczekujące żądanie — stan to "inProgress"
Oczekujący obiekt ma cztery możliwe stany; "inprogress", "canceled", "failed" lub "completed".
Jeśli stan oczekującego żądania to "inprogress", operacje tworzenia (i importowania) kończą się niepowodzeniem z kodem stanu http 409 (konflikt).
Aby rozwiązać konflikt:
Jeśli certyfikat jest tworzony ręcznie, możesz ukończyć certyfikat KV, wykonując scalanie lub usuwanie w oczekującym obiekcie.
Jeśli certyfikat jest tworzony za pomocą wystawcy, możesz poczekać, aż certyfikat zakończy się, zakończy się niepowodzeniem lub zostanie anulowany. Alternatywnie można usunąć oczekujący obiekt.
Uwaga
Usunięcie oczekującego obiektu może lub nie może anulować żądania certyfikatu x509 u dostawcy.
Metoda | Identyfikator URI żądania |
---|---|
POST | https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version} |
Żądanie
{
"policy": {
"x509_props": {
"subject": "CN=MyCertSubject1"
},
"issuer": {
"name": "mydigicert"
}
}
}
Reakcja
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."
}
}
Scalanie po utworzeniu oczekującego żądania za pomocą wystawcy
Scalanie nie jest dozwolone, gdy oczekujący obiekt jest tworzony za pomocą wystawcy, ale jest dozwolony, gdy jego stan to inProgress
.
Jeśli żądanie utworzenia certyfikatu x509 zakończy się niepowodzeniem lub anuluje z jakiegoś powodu, a jeśli certyfikat x509 można pobrać za pomocą środków poza pasmem, można wykonać operację scalania w celu ukończenia certyfikatu KV.
Metoda | Identyfikator URI żądania |
---|---|
POST | https://mykeyvault.vault.azure.net/certificates/mycert1/pending/merge?api-version={api-version} |
Żądanie
{
"x5c": [ "MIICxTCCAbi………………………trimmed for brevitiy……………………………………………EPAQj8=" ]
}
Reakcja
StatusCode: 403, ReasonPhrase: 'Forbidden'
{
"error": {
"code": "Forbidden",
"message": "Merge is forbidden on pending object created with issuer : <issuer-name> while it is in progess."
}
}
Żądanie anulowania, gdy stan oczekującego żądania to "inProgress"
Żądanie anulowania można zażądać tylko. Żądanie może lub nie zostanie anulowane. Jeśli żądanie nie jest "inProgress", zwracany jest stan http 400 (nieprawidłowe żądanie).
Metoda | Identyfikator URI żądania |
---|---|
PATCH | https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version} |
Żądanie
PATCH “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
LUB
PATCH “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"
{
"cancellation_requested": true
}
Reakcja
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"
}
Usuwanie oczekującego obiektu żądania
Uwaga
Usunięcie oczekującego obiektu może lub nie może anulować żądania certyfikatu x509 u dostawcy.
Metoda | Identyfikator URI żądania |
---|---|
DELETE | https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version} |
Żądanie
USUNĄĆ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
LUB
USUNĄĆ “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"
Reakcja
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",
}
Ręczne tworzenie certyfikatu KV
Certyfikat wystawiony z wybranym urzędem certyfikacji można utworzyć za pomocą procesu ręcznego tworzenia. Ustaw nazwę wystawcy na "Nieznany" lub nie określ pola wystawcy.
Metoda | Identyfikator URI żądania |
---|---|
POST | https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version} |
Żądanie
{
"policy": {
"x509_props": {
"subject": "CN=MyCertSubject1"
},
"issuer": {
"name": "Unknown"
}
}
}
Reakcja
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"
}
Scalanie po utworzeniu oczekującego żądania — ręczne tworzenie certyfikatu
Metoda | Identyfikator URI żądania |
---|---|
POST | https://mykeyvault.vault.azure.net/certificates/mycert1/pending/merge?api-version={api-version} |
Żądanie
{
"x5c": [ "MIICxTCCAbi………………………trimmed for brevitiy……………………………………………EPAQj8=" ]
}
Nazwa elementu | Wymagany | Typ | Wersja | Opis |
---|---|---|---|---|
x5c | Tak | array | <wprowadzenie wersji> | Łańcuch certyfikatów X509 jako macierz ciągów base 64. |
Reakcja
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
}
}
}