Monitorowanie tworzenia certyfikatów i zarządzanie nim
Dotyczy: Azure
Scenariusze/operacje opisane w tym artykule to:
- Żądanie certyfikatu KV z obsługiwanym wystawcą
- Pobieranie oczekującego żądania — stan żądania to "inProgress"
- Pobieranie oczekującego żądania — stan żądania to "complete"
- Pobieranie oczekującego żądania — 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 za pomocą 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ą
Method | 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.
Zażądaj
{
"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"
}
Pobieranie oczekującego żądania — stan żądania to "inProgress"
Method | Identyfikator URI żądania |
---|---|
GET | https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version} |
Żądanie
GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
LUB
GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"
Uwaga
Jeśli request_id jest określony 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.
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"
}
Pobieranie oczekującego żądania — stan żądania to "complete"
Żądanie
Method | Identyfikator URI żądania |
---|---|
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"
LUB
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}"
}
Pobieranie oczekującego żądania — stan oczekującego żądania to "anulowane" lub "niepowodzenie"
Żądanie
Method | Identyfikator URI żądania |
---|---|
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"
LUB
GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"
Odpowiedź
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" na podstawie odpowiednio błędu wystawcy lub 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 .
Method | Identyfikator URI żądania |
---|---|
GET | https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version} |
Żądanie
GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
LUB
GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"
Response
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ę 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.
Method | Identyfikator URI żądania |
---|---|
POST | https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version} |
Zażądaj
{
"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."
}
}
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 certyfikat x509 można pobrać za pomocą środków poza pasmem, można wykonać operację scalania w celu ukończenia certyfikatu KV.
Method | Identyfikator URI żądania |
---|---|
POST | https://mykeyvault.vault.azure.net/certificates/mycert1/pending/merge?api-version={api-version} |
Zażądaj
{
"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."
}
}
Żą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).
Method | Identyfikator URI żądania |
---|---|
PATCH | https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version} |
Żądanie
ŁATA “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
LUB
ŁATA “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"
}
Usuwanie oczekującego obiektu żądania
Uwaga
Usunięcie oczekującego obiektu może lub nie może anulować żądania certyfikatu x509 u dostawcy.
Method | 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}"
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",
}
Ręczne tworzenie certyfikatu KV
Certyfikat wystawiony dla wybranego urzędu certyfikacji można utworzyć za pomocą procesu ręcznego tworzenia. Ustaw nazwę wystawcy na "Nieznany" lub nie określ pola wystawcy.
Method | Identyfikator URI żądania |
---|---|
POST | https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version} |
Zażądaj
{
"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"
}
Scalanie po utworzeniu oczekującego żądania — ręczne tworzenie certyfikatu
Method | 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 | Wymagania | Typ | Wersja | opis |
---|---|---|---|---|
x5c | Tak | tablica | <wprowadzenie wersji> | Łańcuch certyfikatów X509 jako macierz ciągów base 64. |
Response
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
}
}
}