7. 証明書管理 (Certificate Management) - Part 2
(第 7 章 Part 1 の続き)
7.4. 証明書発行の申請 (Applying for Certificate Issuance)
クライアントはサーバーの newOrder リソースに POST リクエストを送信することで証明書発行プロセスを開始します。
POST /acme/new-order HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
"protected": base64url({
"alg": "ES256",
"kid": "https://example.com/acme/acct/evOfKhNU60wg",
"nonce": "5XJ1L3lEkMG7tR6pA00clA",
"url": "https://example.com/acme/new-order"
}),
"payload": base64url({
"identifiers": [
{ "type": "dns", "value": "www.example.org" },
{ "type": "dns", "value": "example.org" }
],
"notBefore": "2016-01-01T00:04:00+04:00",
"notAfter": "2016-01-08T00:04:00+04:00"
}),
"signature": "H6ZXtGjTZyUnPeKn...wEA4TklBdh3e454g"
}
サーバーが証明書の発行を希望する場合、201 (Created) レスポンスで応答します。このレスポンスのボディは、クライアントのリクエストと証明書を発行する前にクライアントが完了しなければならない認可を反映したオーダーオブジェクトです。
7.4.1. 事前認可 (Pre-authorization)
ACME は、クライアントが証明書を注文する前に識別子の認可を確立できる事前認可メカニズムを提供します。
7.4.2. オーダーの完了 (Finalizing an Order)
すべての認可が完了したら、クライアントはオーダーの「finalize」URL に CSR を POST することでオーダーを完了します。
POST /acme/order/TOlocE8rfgo/finalize HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
"protected": base64url({
"alg": "ES256",
"kid": "https://example.com/acme/acct/evOfKhNU60wg",
"nonce": "MSF2j2nawWHPxxkE3ZJtKQ",
"url": "https://example.com/acme/order/TOlocE8rfgo/finalize"
}),
"payload": base64url({
"csr": "MIIBPTCBxAIBADBFMQ...FS6aKdZeGsysoCo4H9P"
}),
"signature": "uOrUfIIyfnCB8Ds...nzFBDn1gcMR9waT"
}
7.5. 識別子の認可 (Identifier Authorization)
クライアントが識別子の認可を完了するには、認可オブジェクトのチャレンジの 1 つに応答する必要があります。
7.5.1. チャレンジへの応答 (Responding to Challenges)
クライアントはチャレンジ URL に POST リクエストを送信することでチャレンジに応答します。
POST /acme/chall/prV_B7yEyA4
Host: example.com
Content-Type: application/jose+json
{
"protected": base64url({
"alg": "ES256",
"kid": "https://example.com/acme/acct/evOfKhNU60wg",
"nonce": "UQI1PoRi5OuXzxuX7V7wL0",
"url": "https://example.com/acme/chall/prV_B7yEyA4"
}),
"payload": base64url({}),
"signature": "Q1bURgJoEslbD1c5...3pYdSMLio57mQNN4"
}
7.5.2. 認可の停止 (Deactivating an Authorization)
クライアントは認可を停止することを要求できます。
7.6. 証明書の失効 (Certificate Revocation)
証明書を失効させるには、クライアントはサーバーの revokeCert URL に署名付き失効リクエストを送信します。
POST /acme/revoke-cert HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
"protected": base64url({
"alg": "ES256",
"kid": "https://example.com/acme/acct/evOfKhNU60wg",
"nonce": "JHb54aT_KTXBWQOzGYkt9A",
"url": "https://example.com/acme/revoke-cert"
}),
"payload": base64url({
"certificate": "MIIEDTCCAvegAwIBAgIRAP8...",
"reason": 4
}),
"signature": "Q1bURgJoEslbD1c5...3pYdSMLio57mQNN4"
}
失効リクエストのペイロードには以下のフィールドが含まれます。
certificate(必須、文字列): 失効させる証明書の DER エンコードされた表現の base64url エンコード。
reason(オプション、整数): [RFC5280] で定義された失効理由コード。