Udostępnij za pośrednictwem


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

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