

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# OCSP ステープリングのサーバー証明書設定
<a name="iot-custom-endpoints-cert-config"></a>

AWS IoT Core は、サーバー証明書の[オンライン証明書ステータスプロトコル (OCSP)](https://www.rfc-editor.org/rfc/rfc6960.html) ステープリングをサポートします。これは、サーバー証明書の OCSP ステープリングまたは OCSP ステープリングとも呼ばれます。これは、Transport Layer Security (TLS) ハンドシェイクのサーバー証明書の失効ステータスを確認するために使用されるセキュリティメカニズムです。の OCSP ステープリング AWS IoT Core を使用すると、カスタムドメインのサーバー証明書の有効性に検証レイヤーを追加できます。

でサーバー証明書の OCSP ステープリングを有効に AWS IoT Core して、OCSP レスポンダーを定期的にクエリすることで、証明書の有効性を確認できます。OCSP ステープリング設定は、カスタムドメインを使用してドメイン設定を作成または更新するプロセスの一部です。OCSP ステープリングは、サーバー証明書の失効ステータスを継続的にチェックします。これにより、CA によって失効した証明書が、カスタムドメインに接続するクライアントによって信頼されなくなったことを確認できます。詳細については、「[でサーバー証明書 OCSP を有効にする AWS IoT Core](#iot-custom-endpoints-cert-config-ocsp-manage)」を参照してください。

サーバー証明書の OCSP ステープリングは、リアルタイムの失効ステータスチェックを提供し、失効ステータスの確認に関連するレイテンシーを減らし、安全な接続のプライバシーと信頼性を向上させます。OCSP ステープリングを使用するメリットの詳細については、「[クライアント側の OCSP チェックと比較して OCSP ステープリングを使用する利点](#iot-custom-endpoints-ocsp-stapling-benefits)」を参照してください。

**注記**  
この機能は では使用できません AWS GovCloud (US) Regions。

**Topics**
+ [OCSF とは](#iot-custom-endpoints-cert-config-ocsp-what-is)
+ [OCSP ステープリングの仕組み](#iot-custom-endpoints-cert-config-ocsp-stapling-what-is)
+ [でサーバー証明書 OCSP を有効にする AWS IoT Core](#iot-custom-endpoints-cert-config-ocsp-manage)
+ [でのプライベートエンドポイントのサーバー証明書 OCSP の設定 AWS IoT Core](#iot-custom-endpoints-cert-config-ocsp-private-endpoint)
+ [でサーバー証明書 OCSP ステープリングを使用するための重要な注意事項 AWS IoT Core](#iot-custom-endpoints-cert-config-ocsp-notes)
+ [でのサーバー証明書 OCSP ステープリングのトラブルシューティング AWS IoT Core](#iot-custom-endpoints-cert-config-ocsp-troubleshooting)

## OCSF とは
<a name="iot-custom-endpoints-cert-config-ocsp-what-is"></a>

オンライン証明書ステータスプロトコル (OCSP) は、Transport Layer Security (TLS) ハンドシェイクのサーバー証明書の失効ステータスを提供するのに役立ちます。

### 主要なコンセプト
<a name="iot-custom-endpoints-cert-config-ocsp-concepts"></a>

次の主要な概念は、オンライン証明書ステータスプロトコル (OCSP) の詳細を示しています。

**OCSP**

[OCSP](https://www.rfc-editor.org/rfc/rfc6960.html) は、Transport Layer Security (TLS) ハンドシェイク中に証明書の失効ステータスをチェックするために使用されます。OCSP では、証明書をリアルタイムで検証できます。これにより、証明書が発行された後も失効または期限切れになっていないことが確認されます。また、OCSP は、従来の証明書失効リスト (CRL) よりもスケーラブルです。OCSP レスポンスは小さく、効率的に生成できるため、大規模なプライベートキーインフラストラクチャ (PKI) に適しています。

**OCSP レスポンダー**

OCSP レスポンダー (OCSP サーバーとも呼ばれます) は、証明書の失効ステータスを検証しようとするクライアントから OCSP リクエストを受信して応答します。

**クライアント側の OCSP**

 クライアント側の OCSP では、クライアントが OCSP を使用して OCSP レスポンダーに問い合わせを行い、TLS ハンドシェイク中に証明書の失効ステータスを確認します。

**サーバー側の OCSP**

サーバー側の OCSP (OCSP ステープリングとも呼ばれます) では、サーバーは (クライアントではなく) OCSP レスポンダーにリクエストを行うことができます。サーバーは証明書への OCSP レスポンスをステープルし、TLS ハンドシェイク中にクライアントに返します。

### OCSP の図
<a name="iot-custom-endpoints-cert-config-ocsp-diagram"></a>

次の図は、クライアント側の OCSP とサーバー側の OCSP の仕組みを示しています。

![クライアント側の OCSP とサーバー側の OCSP の図](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/custom-domain-ocsp-uml.png)


**クライアント側の OCSP**

1. クライアントは、サーバーで TLS ハンドシェイクを開始する `ClientHello` メッセージを送信します。

1. サーバーはメッセージを受信し、`ServerHello` メッセージで応答します。また、サーバーはサーバー証明書をクライアントに送信します。

1. クライアントはサーバー証明書を検証し、そこから OCSP URI を抽出します。

1. クライアントは証明書失効チェックリクエストを OCSP レスポンダーに送信します。

1. OCSP レスポンダーは OCSP レスポンスを送信します。

1. クライアントは OCSP レスポンスから証明書のステータスを検証します。

1. TLS ハンドシェイクが完了しました。

**サーバー側の OCSP**

1. クライアントは、サーバーで TLS ハンドシェイクを開始する `ClientHello` メッセージを送信します。

1. サーバーはメッセージを受信し、最新のキャッシュされた OCSP レスポンスを取得します。キャッシュされたレスポンスが欠落しているか、または期限切れの場合、サーバーは証明書ステータスのために OCSP レスポンダーを呼び出します。

1. OCSP レスポンダーは OCSP レスポンスをサーバーに送信します。

1. サーバーは `ServerHello` メッセージを送信します。また、サーバーはサーバー証明書と証明書のステータスをクライアントに送信します。

1. クライアントは OCSP 証明書のステータスを検証します。

1. TLS ハンドシェイクが完了しました。

## OCSP ステープリングの仕組み
<a name="iot-custom-endpoints-cert-config-ocsp-stapling-what-is"></a>

OCSP Stapling は、クライアントとサーバー間の TLS ハンドシェイク中に使用され、サーバー証明書の失効ステータスをチェックします。サーバーは OCSP レスポンダーに OCSP リクエストを行い、クライアントに返された証明書への OCSP レスポンスをステープルします。サーバーが OCSP レスポンダーにリクエストを行うことで、レスポンスをキャッシュし、多くのクライアントに複数回使用できます。

### での OCSP ステープリングの仕組み AWS IoT Core
<a name="iot-custom-endpoints-ocsp-stapling-iot-core"></a>

次の図は、サーバー側の OCSP ステープリングが AWS IoT Coreでどのように機能するかを示しています。

![この図は、サーバー側の OCSP ステープリングの仕組みを示しています AWS IoT Core。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/custom-domain-ocsp-core-uml.png)


1. デバイスは、OCSP ステープリングが有効になっているカスタムドメインに登録する必要があります。

1. AWS IoT Core は OCSP レスポンダーを 1 時間ごとに呼び出して、証明書のステータスを取得します。

1. OCSP レスポンダーはリクエストを受け取り、最新の OCSP レスポンスを送信し、キャッシュされた OCSP レスポンスを保存します。

1. デバイスは TLS ハンドシェイクを開始する`ClientHello`メッセージを送信します AWS IoT Core。

1. AWS IoT Core はサーバーキャッシュから最新の OCSP レスポンスを取得し、証明書の OCSP レスポンスで応答します。

1. サーバーはデバイスに `ServerHello` メッセージを送信します。また、サーバーはサーバー証明書と証明書のステータスをクライアントに送信します。

1. デバイスは OCSP 証明書のステータスを検証します。

1. TLS ハンドシェイクが完了しました。

### クライアント側の OCSP チェックと比較して OCSP ステープリングを使用する利点
<a name="iot-custom-endpoints-ocsp-stapling-benefits"></a>

サーバー証明書の OCSP Stapling を使用する利点を、以下にいくつか挙げています。

**プライバシーの向上**

OCSP ステープリングを使用しないと、クライアントのデバイスがサードパーティーの OCSP レスポンダーに情報を公開し、ユーザーのプライバシーが侵害される可能性があります。OCSP ステープリングは、サーバーに OCSP レスポンスを取得させ、クライアントに直接配信させることで、この問題を軽減します。

**信頼性の向上**

OCSP ステープリングは、OCSP サーバーが停止するリスクを軽減するため、安全な接続の信頼性を向上させることができます。OCSP レスポンスがステープルされると、サーバーには証明書に最新のレスポンスが含まれます。これは、OCSP レスポンダーが一時的に使用できない場合でも、クライアントが失効ステータスにアクセスできるためです。OCSP Stapling は、サーバーが定期的に OCSP レスポンスを取得して、キャッシュされたレスポンスを TLS ハンドシェイクに含めるため、これらの問題の軽減に役立ちます。これにより、OCSP レスポンダーのリアルタイムの可用性への依存が抑えられます。

**サーバー負荷の削減**

OCSP ステープリングは、OCSP レスポンダーからサーバーへの OCSP リクエストに応答する負担を軽減します。これにより、負荷がより均等に分散され、証明書の検証プロセスの効率性が向上し、スケーラブルになります。

**レイテンシーの短縮**

OCSP ステープリングは、TLS ハンドシェイク中の証明書の失効ステータスの確認に関連するレイテンシーを減らします。クライアントが OCSP サーバーを個別にクエリする代わりに、サーバーはリクエストを送信し、ハンドシェイク中にサーバー証明書に OCSP レスポンスをアタッチします。

## でサーバー証明書 OCSP を有効にする AWS IoT Core
<a name="iot-custom-endpoints-cert-config-ocsp-manage"></a>

サーバー証明書の OCSP ステープリングを有効にするには AWS IoT Core、カスタムドメインのドメイン設定を作成するか、既存のカスタムドメイン設定を更新します。カスタムドメインを使用してドメイン設定を作成する一般的な方法については、「[カスタマーマネージドドメインの作成と設定](iot-custom-endpoints-configurable-custom.md)」を参照してください。

次の手順を使用して、 AWS マネジメントコンソール または を使用して OCSP サーバーのステープリングを有効にします AWS CLI。

### コンソール
<a name="iot-custom-endpoints-cert-config-ocsp-manage-console"></a>

**AWS IoT コンソールを使用してサーバー証明書の OCSP ステープリングを有効にするには:**

1. ナビゲーションメニューから **[設定]** を選択し、**[ドメイン設定を作成]** を選択するか、またはカスタムドメインの既存のドメイン設定を選択します。

1. 前のステップで新しいドメイン設定の作成を選択した場合は、**[ドメイン設定を作成]** ページが表示されます。**[ドメイン設定プロパティ]** セクションで、**[カスタムドメイン]** を選択します。ドメイン設定を作成する情報を入力します。

   カスタムドメインの既存のドメイン設定を更新する場合は、**[ドメイン設定の詳細]** ページが表示されます。**[編集]** を選択します。

1. OCSP サーバーステープリングを有効にするには、**[サーバー証明書の設定]** サブセクションの **[サーバー証明書の OCSP Stapling を有効にする]** を選択します。

1. **[ドメイン設定の作成]** または **[ドメイン設定の更新]** を選択します。

### AWS CLI
<a name="iot-custom-endpoints-cert-config-ocsp-manage-cli"></a>

**AWS CLIを使用してサーバー証明書の OCSP ステープリングを有効にするには**

1. カスタムドメインの新しいドメイン設定を作成する場合、OCSP サーバーのステープリングを有効にするコマンドは次のようになります。

   ```
   aws iot create-domain-configuration --domain-configuration-name "myDomainConfigurationName" \
           --server-certificate-arns arn:aws:iot:{{us-east-1:123456789012}}:cert/{{f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3}} \
           --server-certificate-config "enableOCSPCheck=true|false"
   ```

1. カスタムドメインの既存のドメイン設定を更新する場合、OCSP サーバーのステープリングを有効にするコマンドは次のようになります。

   ```
   aws iot update-domain-configuration --domain-configuration-name "myDomainConfigurationName" \
           --server-certificate-arns arn:aws:iot:{{us-east-1:123456789012}}:cert/{{f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3}} \
           --server-certificate-config "enableOCSPCheck=true|false"
   ```

詳細については、 AWS IoT API リファレンスの[CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)」および[UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)」を参照してください。

## でのプライベートエンドポイントのサーバー証明書 OCSP の設定 AWS IoT Core
<a name="iot-custom-endpoints-cert-config-ocsp-private-endpoint"></a>

プライベートエンドポイント用の OCSP を使用すると、Amazon Virtual Private Cloud (Amazon VPC) 内のプライベート OCSP リソースを AWS IoT Core オペレーションに使用できます。このプロセスでは、OCSP レスポンダーとして機能する Lambda 関数を設定します。Lambda 関数は、プライベート OCSP リソースを使用して、 AWS IoT Core が使用する OCSP レスポンスを作成する場合があります。

### Lambda function
<a name="iot-custom-endpoints-cert-config-ocsp-private-endpoint-lambda"></a>

プライベートエンドポイントにサーバー OCSP を設定する前に、基本的な OCSP レスポンスをサポートする Request for Comments (RFC) 6960 準拠のオンライン証明書ステータスプロトコル (OCSP) レスポンダーとして機能する Lambda 関数を作成します。Lambda 関数は、Distinguished Encoding Rules (DER) 形式での OCSP リクエストの base64 エンコードを受け入れます。Lambda 関数のレスポンスもまた、DER 形式の base64 エンコードされた OCSP レスポンスです。レスポンスサイズは 4 キロバイト (KiB) を超えることはできません。Lambda 関数は、ドメイン設定 AWS リージョン と同じ AWS アカウント および にある必要があります。以下は、Lambda 関数の例を示しています。

#### Lambda 関数の例
<a name="ocsp-lambda-example"></a>

------
#### [ JavaScript ]

```
import * as pkijs from 'pkijs';
console.log('Loading function');
 
export const handler = async (event, context) => {
    const requestBytes = decodeBase64(event);
    const ocspRequest = pkijs.OCSPRequest.fromBER(requestBytes);
 
    console.log("Here is a better look at the OCSP request");
    console.log(ocspRequest.toJSON());
 
    const ocspResponse = getOcspResponse();
    
    console.log("Here is a better look at the OCSP response");
    console.log(ocspResponse.toJSON());
 
   const responseBytes = ocspResponse.toSchema().toBER();
   return encodeBase64(responseBytes);
};
 
function getOcspResponse() {
    const responseString = "MIIC/woBAKCCAvgwggL0BgkrBgEFBQcwAQEEggLlMIIC4TCByqFkMGIxJzAlBgNVBAoMHlJpY2hhcmQncyBEaXNjb3VudCBMYW1iZGEgT0NTUDEZMBcGA1UEAwwQcm91bmRhYm91dE5hdGlvbjEPMA0GA1UEBwwGQ2FybWVsMQswCQYDVQQGEwJJThgPMjAyNDA0MjMxODUzMjVaMFEwTzA6MAkGBSsOAwIaBQAEFD2L7Ol/6ieNMaJbwRbxFWFweXGPBBSzSThwzTc3/p5w7WOtPjp3otNtVgIBAYAAGA8yMDI0MDQyMzE4NTMyNVowDQYJKoZIhvcNAQELBQADggIBAJFRyjDAHfazNejo704Ra3FOsGq/+s82R1spDarr3k7Pzkod9jJhwsZ2YgushlS4Npfe4lHCdwFyZR75WXrW55aXFddy03KLz01ZLNYyxkleW3f5dgrUcRU3PMW9TU2gZ0VOV8L5pmxKBoBRFt6EKtyh4CbiuqkTpLdLIMZmTyanhl5GVyU5MBHdbH8YWZoT/DEBiyS7ZsyhKo6igWU/SY7YMSKgwBvFsqSDcOa/hRYQkxWKWJ19gcz8CIkWN7NvfIxCs6VrAdzEJwmE7y3v+jdfhxW9JmI4xStE4K0tAR9vVOOfKs7NvxXj7oc9pCSG60xl96kaEE6PaY1YsfNTsKQ7pyCJ0s7/2q+ieZ4AtNyzw1XBadPzPJNv6E0LvI24yQZqN5wACvtut5prMMRxAHbOy+abLZR58wloFSELtGJ7UD96LFv1GgtC5s+2QlzPc4bEEof7Lo1EISt3j2ibNch8LxhqTQ4ufrbhsMkpSOTFYEJVMJF6aKj/OGXBUUqgc0Jx6jjJXNQd+l5KCY9pQFeb/wVUYC6mYqZOkNNMMJxPbHHbFnqb68yO+g5BE9011N44YXoPVJYoXxBLFX+OpRu9cqPkT9/vlkKd+SYXQknwZ81agKzhf1HsBKabtJwNVMlBKaI8g5UGa7Bxi6ewH3ezdWiERRUK7F56OM53wto/";
    const responseBytes = decodeBase64(responseString);
    return pkijs.OCSPResponse.fromBER(responseBytes);
}
 
function decodeBase64(input) {
    const binaryString = atob(input);
 
    const byteArray = new Uint8Array(binaryString.length);
    for (var i = 0; i < binaryString.length; i++) {
        byteArray[i] = binaryString.charCodeAt(i);
    }
 
    return byteArray.buffer;
}
 
function encodeBase64(buffer) {
    var binary = '';
    const bytes = new Uint8Array( buffer );
    const len = bytes.byteLength;
 
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode( bytes[ i ] );
    }
 
    return btoa(binary);
}
```

------
#### [ Java ]

```
package com.example.ocsp.responder;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import org.bouncycastle.cert.ocsp.OCSPReq;
import org.bouncycastle.cert.ocsp.OCSPResp;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Base64;
 
public class LambdaResponderApplication implements RequestHandler<String, String> {
    @Override
    public String handleRequest(final String input, final Context context) {
        LambdaLogger logger = context.getLogger();
        
        byte[] decodedInput = Base64.getDecoder().decode(input);
 
        OCSPReq req;
        try {
            req = new OCSPReq(decodedInput);
        } catch (IOException e) {
            logger.log("Got an IOException creating the OCSP request: " + e.getMessage());
            throw new RuntimeException(e);
        }
 
        try {
            OCSPResp response = businessLogic.getMyResponse();
            String toReturn = Base64.getEncoder().encodeToString(response.getEncoded());
            return toReturn;
        } catch (Exception e) {
            logger.log("Got an exception creating the response: " + e.getMessage());
            return "";
        }
    }
}
```

------

#### Lambda 関数を呼び出す AWS IoT ことを に許可する
<a name="grant-permission-ocsp-lambda"></a>

Lambda OCSP レスポンダーを使用してドメイン設定を作成するプロセスでは、関数の作成後に Lambda 関数を呼び出す AWS IoT アクセス許可を付与する必要があります。アクセス許可を付与するには、[add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html) CLI コマンドを使用できます。

**を使用して Lambda 関数にアクセス許可を付与する AWS CLI**

1. 値を挿入したら、次のコマンドを入力します。`statement-id` 値は一意でなければならないことに注意してください。`{{Id-1234}}` を正確な値に置き換えます。そうしないと、`ResourceConflictException` エラーが発生する可能性があります。

   ```
   aws lambda add-permission  \
   --function-name "ocsp-function" \
   --principal "iot.amazonaws.com" \
   --action "lambda:InvokeFunction" \
   --statement-id "{{Id-1234}}" \
   --source-arn {{arn:aws:iot:us-east-1:123456789012}}:domainconfiguration/{{<domain-config-name>/*}}
   --source-account {{123456789012}}
   ```

   IoT ドメイン設定 ARN は次のパターンに従います。サービスで生成されるサフィックスは作成前にはわからないため、サフィックスを `*` に置き換える必要があります。ドメイン設定が作成され、正確な ARN がわかった時点で、アクセス許可を更新することができます。

   `arn:{{aws}}:iot:{{use-east-1:123456789012}}:domainconfiguration/{{domain-config-name/service-generated-suffix}}`

1. コマンドが成功すると、この例のようなアクセス許可ステートメントが返されます。次のセクションに進み、プライベートエンドポイントの OCSP Stapling を設定できます。

   ```
   {
       "Statement": "{\"Sid\":\"{{Id-1234}}\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:{{us-east-1}}:123456789012:function:ocsp-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:iot:{{us-east-1:123456789012}}:domainconfiguration/{{domain-config-name/*}}\"}}}"
   }
   ```

   コマンドが成功しない場合は、この例のようなエラーが返されます。続行する前に、エラーを確認して修正する必要があります。

   ```
   An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer
   mission on resource: arn:aws:lambda:{{us-east-1}}:{{123456789012}}:function:{{ocsp-function}}
   ```

### プライベートエンドポイントのサーバー OCSP Stapling を設定する
<a name="iot-custom-endpoints-cert-config-ocsp-private-endpoints"></a>

#### コンソール
<a name="iot-custom-endpoints-cert-config-ocsp-private-endpoint-console"></a>

**AWS IoT コンソールを使用してサーバー証明書の OCSP ステープリングを設定するには:**

1. ナビゲーションメニューから **[設定]** を選択し、**[ドメイン設定を作成]** を選択するか、カスタムドメインの既存のドメイン設定を選択します。

1. 前のステップで新しいドメイン設定の作成を選択した場合は、**[ドメイン設定を作成]** ページが表示されます。**[ドメイン設定プロパティ]** セクションで、**[カスタムドメイン]** を選択します。ドメイン設定を作成する情報を入力します。

   カスタムドメインの既存のドメイン設定を更新する場合は、**[ドメイン設定の詳細]** ページが表示されます。**[編集]** を選択します。

1. OCSP サーバーステープリングを有効にするには、**[サーバー証明書の設定]** サブセクションの **[サーバー証明書の OCSP Stapling を有効にする]** を選択します。

1. **[ドメイン設定の作成]** または **[ドメイン設定の更新]** を選択します。

#### AWS CLI
<a name="iot-custom-endpoints-cert-config-ocsp-private-endpoint-cli"></a>

**AWS CLIを使用してサーバー証明書の OCSP Stapling を設定にするには:**

1. カスタムドメインの新しいドメイン設定を作成する場合は、プライベートエンドポイントのサーバー証明書の OCSP を設定するコマンドは次のようになります。

   ```
   aws iot create-domain-configuration --domain-configuration-name "myDomainConfigurationName" \
           --server-certificate-arns arn:aws:iot:{{us-east-1:123456789012}}:cert/{{f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3}} \
           --server-certificate-config "enableOCSPCheck=true, ocspAuthorizedResponderArn=arn:aws:acm:{{us-east-1:123456789012}}:certificate/{{certificate_ID}}, ocspLambdaArn=arn:aws:lambda:{{us-east-1:123456789012}}:function:{{my-function}}"
   ```

1. カスタムドメインの既存のドメイン設定を更新する場合は、プライベートエンドポイントのサーバー証明書の OCSP を設定するコマンドは次のようになります。

   ```
   aws iot update-domain-configuration --domain-configuration-name "myDomainConfigurationName" \
           --server-certificate-arns arn:aws:iot:{{us-east-1:123456789012}}:cert/{{f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3}} \
           --server-certificate-config "enableOCSPCheck=true, ocspAuthorizedResponderArn=arn:aws:acm:{{us-east-1:123456789012}}:certificate/{{certificate_ID}}, ocspLambdaArn=arn:aws:lambda:{{us-east-1:123456789012}}:function:{{my-function}}"
   ```

**enableOCSPCheck**  
これは、サーバーの OCSP Stapling チェックが有効になっているかどうかを示すブール値です。サーバー証明書の OCSP Stapling を有効にするには、この値が true である必要があります。

**ocspAuthorizedResponderArn**  
これは、 (ACM) に保存されている X.509 証明書の Amazon リソースネーム AWS Certificate Manager (ARN) の文字列値です。指定した場合、この証明書 AWS IoT Core を使用して、受信した OCSP レスポンスの署名を検証します。指定しない場合、 AWS IoT Core は発行証明書を使用してレスポンスを検証します。証明書は、ドメイン設定 AWS リージョン と同じ AWS アカウント および にある必要があります。承認されたレスポンダー証明書を登録する方法の詳細については、[「 AWS Certificate Managerに証明書をインポートする](https://docs.aws.amazon.com//acm/latest/userguide/import-certificate.html)」を参照してください。

**ocspLambdaArn**  
これは、基本的な OCSP レスポンスをサポートする Request for Comments (RFC) 6960 準拠 (OCSP) レスポンダーとして機能する Lambda 関数の Amazon リソースネーム (ARN) の文字列値です。Lambda 関数は、DER 形式を使用してエンコードされた OCSP リクエストの base64 エンコードを受け入れます。Lambda 関数のレスポンスもまた、DER 形式の base64 エンコードされた OCSP レスポンスです。レスポンスサイズは 4 キロバイト (KiB) を超えることはできません。Lambda 関数は、ドメイン設定 AWS リージョン と同じ AWS アカウント および にある必要があります。

詳細については、 AWS IoT API リファレンスの[CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)」および[UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)」を参照してください。

## でサーバー証明書 OCSP ステープリングを使用するための重要な注意事項 AWS IoT Core
<a name="iot-custom-endpoints-cert-config-ocsp-notes"></a>

でサーバー証明書 OCSP を使用する場合は AWS IoT Core、次の点に注意してください。

1. AWS IoT Core は、パブリック IPv4 アドレス経由で到達可能な OCSP レスポンダーのみをサポートします。

1. の OCSP ステープリング機能は、承認されたレスポンダーをサポート AWS IoT Core していません。すべての OCSP レスポンスは、証明書に署名した CA によって署名される必要があり、CA はカスタムドメインの証明書チェーンの一部である必要があります。

1. の OCSP ステープリング機能は、自己署名証明書を使用して作成されたカスタムドメインをサポート AWS IoT Core していません。

1. AWS IoT Core は OCSP レスポンダーを 1 時間ごとに呼び出し、レスポンスをキャッシュします。応答者への呼び出しが失敗した場合、 AWS IoT Core は最新の有効な応答をステープルします。

1. `nextUpdateTime` が有効でなくなった場合、 AWS IoT Core はキャッシュからレスポンスを削除し、次に OCSP レスポンダーへの呼び出しが成功するまで TLS ハンドシェイクは OCSP レスポンスデータを含めません。これは、サーバーが OCSP レスポンダーから有効なレスポンスを取得する前に、キャッシュされたレスポンスの有効期限が切れた場合に発生する可能性があります。`nextUpdateTime` の値は、OCSP レスポンスがこの時点まで有効であることを示唆しています。`nextUpdateTime` の詳細については、「[サーバー証明書 OCSP ログエントリ](cwl-format.md#server-ocsp-logs)」を参照してください。

1. は、OCSP レスポンスの受信に AWS IoT Core 失敗したり、期限切れであるため既存の OCSP レスポンスを削除したりすることがあります。このような状況が発生した場合、 AWS IoT Core は OCSP レスポンスなしでカスタムドメインによって提供されるサーバー証明書を引き続き使用します。

1. OCSP レスポンスのサイズは 4 KiB を超過できません。

## でのサーバー証明書 OCSP ステープリングのトラブルシューティング AWS IoT Core
<a name="iot-custom-endpoints-cert-config-ocsp-troubleshooting"></a>

AWS IoT Core は、`RetrieveOCSPStapleData.Success`メトリクスと`RetrieveOCSPStapleData`ログエントリを CloudWatch に出力します。メトリクスとログエントリは、OCSP レスポンスの取得に関連する問題を検出するのに役立ちます。詳細については、「[サーバー証明書の OCSP ステープリングメトリクス](metrics_dimensions.md#server-ocsp-metrics)」および「[サーバー証明書 OCSP ログエントリ](cwl-format.md#server-ocsp-logs)」を参照してください。