

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

# coreHTTP 相互認証のデモ
<a name="core-http-ma-demo"></a>

**重要**  <a name="deprecation-message-demo"></a>
このデモは、非推奨の Amazon-FreeRTOS リポジトリでホストされています。新しいプロジェクトを作成するときは、[ここから始める](freertos-getting-started-modular.md)ことをお勧めします。現在非推奨の Amazon-FreeRTOS リポジトリをベースにした既存の FreeRTOS プロジェクトが既にある場合は、「[Amazon FreeRTOS Github リポジトリ移行ガイド](github-repo-migration.md)」を参照してください。

## 序章
<a name="core-http-ma-demo-intro"></a>

coreHTTP (相互認証) デモプロジェクトでは、クライアントとサーバー間で TLS と相互認証を使用して HTTP サーバーへの接続を確立する方法を示します。このデモでは、mbedTLS ベースのトランスポートインターフェイス実装を使用して、サーバーおよびクライアントに認証された TLS 接続を確立します。また、HTTP でのリクエストレスポンスワークフローを示します。

**注記**  
FreeRTOS デモをセットアップして実行するには、[FreeRTOS の開始方法](freertos-getting-started.md) の手順に従います。

## 機能
<a name="core-http-ma-demo-functionality"></a>

このデモでは、以下のステップを実行する方法を示す単一のアプリケーションタスクと例を作成します。
+  AWS IoT エンドポイントの HTTP サーバーに接続します。
+ POST リクエストを送信する。
+ レスポンスを受信する。
+ サーバーから切断する。

これらのステップを完了すると、このデモによって以下のスクリーンショットのような出力が生成されます。

![\[AWS IoT デモの初期化、TLS セッション確立、HTTP POST リクエスト、デモが正常に完了したことを示すメモリメトリクスを示すログ出力。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/coreHTTP.output.png)


 AWS IoT コンソールは、次のスクリーンショットのような出力を生成します。

![\[AWS IoT 2020 年 11 月 20 日 19:09:09 UTC にトピックに発行された AWS IoT 「コンソールからこんにちは」メッセージを示す コンソール。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/coreHTTP.console.png)


## ソースコードの編成
<a name="core-http-s3-ma-demo-source-code-organization"></a>

デモソースファイルの名前は `http_demo_mutual_auth.c` です。このファイルは、`freertos/demos/coreHTTP/` ディレクトリと [GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c) ウェブサイトにあります。

## HTTP AWS IoT サーバーへの接続
<a name="core-http-ma-demo-connecting"></a>

[ connectToServerWithBackoffRetries](https://github.com/aws/amazon-freertos/blob/main/demos/common/http_demo_helpers/http_demo_utils.c#L131-L170) 関数は、HTTP サーバーへの相互認証された TLS AWS IoT 接続を試みます。接続が失敗すると、タイムアウト後に接続を再試行します。タイムアウト値は、最大試行回数に達するか、最大タイムアウト値に達するまで、指数関数的に増加します。`RetryUtils_BackoffAndSleep` 関数は、指数関数的に増加するタイムアウト値を提供し、最大試行回数に達したときに `RetryUtilsRetriesExhausted` を返します。`connectToServerWithBackoffRetries` 関数は、設定された試行回数に達してもブローカーへの TLS 接続を確立できない場合に、失敗ステータスを返します。

## HTTP リクエストの送信とレスポンスの受信
<a name="core-http-ma-demo-send-receive"></a>

[ prvSendHttpRequest](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c#L402-L507) 関数は、POST リクエストを HTTP AWS IoT サーバーに送信する方法を示します。で REST API にリクエストを行う方法の詳細については AWS IoT、[「デバイス通信プロトコル - HTTPS](https://docs.aws.amazon.com/iot/latest/developerguide/http.html)」を参照してください。レスポンスは、同じ coreHTTP API 呼び出しである `HTTPClient_Send` で受信されます。