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 inProgressjest .

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