次の方法で共有


証明書の作成を監視および管理する

適用対象: Azure

この記事で説明するシナリオ/操作は次のとおりです。

  • サポートされている発行者を使用して KV 証明書を要求する
  • 保留中の要求を取得する - 要求の状態は「処理中」です
  • 保留中の要求を取得する - その要求の状態は "完了" である
  • 保留中の要求を取得する - 保留中の要求の状態が "取り消されました" または "失敗" です
  • 保留中の要求を取得する - 保留中の要求の状態が "削除" または "上書き" されている
  • 保留中の要求が存在する場合に作成 (またはインポート) する - 状態が "inProgress" である
  • 保留中の要求が発行者 (DigiCert など) によって作成されたときにマージ
  • 保留中の要求の状態が "処理中" のときにキャンセルを要求
  • 保留中の要求オブジェクトを削除する
  • KV 証明書を手動で作成する
  • 保留中の要求が作成されたときにマージ - 証明書の手動作成

サポートされている発行者を使用して KV 証明書を要求する

メソッド 要求 URI
POST https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version}

次の例では、「mydigicert」という名前のオブジェクトが発行元プロバイダーとして DigiCert とともにキー ボールト内で既に利用可能である必要があります。 証明書の発行者は、CertificateIssuer リソースとして Azure Key Vault (KV) で表されるエンティティです。 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>"
  }
}

エラー コードの値は、発行者またはユーザー エラーに基づいて、それぞれ "証明書発行者エラー" または "要求拒否" にすることができます。

保留中の要求を取得する - 保留中の要求の状態が "削除" または "上書き" されている

保留中のオブジェクトは、状態が 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": "…"
  }
}

保留中の要求が存在する場合に作成 (またはインポート) する - 状態が "inProgress" である

保留中のオブジェクトには、4 つの状態が考えられます。"inprogress"、"canceled"、"failed"、または "completed"。

保留中の要求の状態が "inprogress" の場合、作成 (およびインポート) 操作は失敗し、http 状態コードは 409 (競合) になります。

競合を修正するには:

  • 証明書を手動で作成する場合は、保留中のオブジェクトに対してマージまたは削除を行って KV 証明書を完成させることができます。

  • 証明書が発行者で作成されている場合は、証明書の完了、失敗、または取り消しが行われるまで待機できます。 または、保留中のオブジェクトを削除することもできます。

保留中のオブジェクトを削除すると、プロバイダーとの 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 証明書を取得できる場合は、KV 証明書を完了するためのマージ操作を実行できます。

メソッド 要求 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
削除 https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

リクエスト

削除 “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

または

削除 “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",
}

KV 証明書を手動で作成する

手動作成プロセスを使用して、任意の CA で発行された証明書を作成できます。 発行者の名前を "不明" に設定するか、発行者フィールドを指定しないでください。

メソッド 要求 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 イエス array <バージョンの紹介> Base 64 文字列配列としての X509 証明書チェーン。

[応答]

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