

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

# カスタムクライアント証明書の検証
<a name="customize-client-auth"></a>

AWS IoT Core は X.509 クライアント証明書のカスタムクライアント証明書検証をサポートしており、クライアント認証管理を強化します。この証明書の検証方法は認証前証明書チェックとも呼ばれ、独自の基準 (Lambda 関数で定義) に基づいてクライアント証明書を評価し、クライアント証明書または証明書の署名認証局 (CA) 証明書を取り消して、クライアントが AWS IoT Coreに接続できないようにします。例えば、[オンライン証明書ステータスプロトコル (OCSP)](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol) または[証明書失効リスト (CRL) ](https://en.wikipedia.org/wiki/Certificate_revocation_list)エンドポイントをサポートする検証機関に対して証明書のステータスを検証する独自の証明書失効チェックを作成し、失効した証明書を持つクライアントへの接続を防ぐことができます。クライアント証明書の評価に使用される基準は、Lambda 関数 (認証前 Lambda とも呼ばれます) で定義されます。ドメイン設定で設定されたエンドポイントを使用し、[[認証タイプ]](protocols.md#connection-protocol-auth-mode) は X.509 証明書である必要があります。さらに、クライアントは接続時に [Server Name Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) 拡張機能を提供する必要があります AWS IoT Core。

**注記**  
この機能は、 AWS GovCloud (US) リージョンではサポートされていません。

**Topics**
+ [ステップ 1: X.509 クライアント証明書を に登録する AWS IoT Core](#client-auth-cert-verification)
+ [ステップ 2: Lambda 関数を作成する](#customize-client-auth-lambda)
+ [ステップ 3: AWS IoT に Lambda 関数の呼び出しを許可する](#customize-client-configuration-grant-permission)
+ [ステップ 4: ドメインの認証設定を設定する](#customize-client-configuration)

## ステップ 1: X.509 クライアント証明書を に登録する AWS IoT Core
<a name="client-auth-cert-verification"></a>

これをまだ実行していない場合は、[X.509 クライアント証明書](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html)を登録してアクティブ化します AWS IoT Core。それ以外の場合は、次のステップに進みます。

クライアント証明書を に登録してアクティブ化するには AWS IoT Core、次の手順に従います。

1. [でクライアント証明書を直接作成 AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html)する場合。これらのクライアント証明書は、 に自動的に登録されます AWS IoT Core。

1. [独自のクライアント証明書を作成する](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html)場合は、[以下の手順に従って登録します AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html)。

1. クライアント証明書をアクティブ化するには、[以下の手順](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html)に従います。

## ステップ 2: Lambda 関数を作成する
<a name="customize-client-auth-lambda"></a>

証明書の検証を実行し、設定されたエンドポイントのクライアント接続試行ごとに呼び出される Lambda 関数を作成する必要があります。この Lambda 関数を作成するときは、「[最初の Lambda 関数を作成する](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html)」の一般的なガイダンスに従ってください。さらに、Lambda 関数が、次のように予想されるリクエストとレスポンスの形式に準拠していることを確認します。

**Lambda 関数のイベントの例**

```
{
	"connectionMetadata": {
		"id": "string"
	},
	"principalId": "string",
	"serverName": "string",
	"clientCertificateChain": [
		"string",
		"string"
	]
}
```

`connectionMetadata`  
クライアントから AWS IoT Coreへの接続に関連するメタデータまたは追加情報。

`principalId`  
TLS 接続のクライアントに関連付けられたプリンシパル識別子。

`serverName`  
[[サーバー名表示 (SNI)]](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) ホスト名文字列。 AWS IoT Core では、デバイスが [SNI 拡張](https://www.rfc-editor.org/rfc/rfc3546#section-3.1)を Transport Layer Security (TLS) に送信し、`host_name` フィールドに完全なエンドポイントアドレスを指定する必要があります。

`clientCertificateChain`  
クライアントの X.509 証明書チェーンを表す文字列の配列。

**Lambda 関数のレスポンスの例**

```
{
	"isAuthenticated": "boolean"
}
```

`isAuthenticated`  
リクエストが認証されるかどうかを示すブール値。

**注記**  
Lambda レスポンスでは、さらなる認証および承認に進むには `isAuthenticated` が `true` である必要があります。それ以外の場合は、IoT クライアント証明書を無効にし、X.509 クライアント証明書によるカスタム認証をブロックして、さらなる認証および承認を行うことができます。

## ステップ 3: AWS IoT に Lambda 関数の呼び出しを許可する
<a name="customize-client-configuration-grant-permission"></a>

Lambda 関数を作成したら、[add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html) CLI コマンドを使用して、関数を呼び出す AWS IoT アクセス許可を に付与する必要があります。この Lambda 関数は、設定されたエンドポイントへの接続試行ごとに呼び出されることに注意してください。詳細については、[「Lambda 関数 AWS IoT の呼び出しを許可する](custom-auth-authorize.md)」を参照してください。

## ステップ 4: ドメインの認証設定を設定する
<a name="customize-client-configuration"></a>

次のセクションでは、 AWS CLIを使用してカスタムドメインの認証設定を設定する方法について説明します。

### ドメインのクライアント証明書設定を設定する (CLI)
<a name="customize-client-auth-cli"></a>

ドメイン設定がない場合は、[https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html) CLI コマンドを使用してドメイン設定を作成します。既にドメイン設定がある場合は、[https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html) CLI コマンドを使用してドメインのクライアント証明書設定を更新します。前のステップで作成した Lambda 関数の ARN を追加する必要があります。

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config 'clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config '{"clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

`domain-configuration-name`  
ドメイン構成の名前。

`authentication-type`  
ドメイン設定の認証タイプ。詳細については、「[認証タイプの選択](protocols.md#connection-protocol-auth-mode)」を参照してください。

`application-protocol`  
デバイスが AWS IoT Coreとの通信に使用するアプリケーションプロトコル。詳細については、「[アプリケーションプロトコルの選択](protocols.md#protocol-selection)」を参照してください。

`client-certificate-config`  
ドメインのクライアント認証設定を指定するオブジェクト。

`clientCertificateCallbackArn`  
新しい接続が確立されるときに TLS レイヤーで AWS IoT 呼び出す Lambda 関数の Amazon リソースネーム (ARN)。カスタムクライアント証明書の検証を実行するようにクライアント認証をカスタマイズするには、前のステップで作成した Lambda 関数の ARN を追加する必要があります。

詳細については、「*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)」を参照してください。ドメイン設定の詳細については、「[ドメイン設定](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html)」を参照してください。