coreHTTP 相互認証のデモ - FreeRTOS

coreHTTP 相互認証のデモ

重要

このデモは、非推奨の Amazon-FreeRTOS リポジトリでホストされています。新しいプロジェクトを作成するときは、ここから始めることをお勧めします。現在非推奨の Amazon-FreeRTOS リポジトリをベースにした既存の FreeRTOS プロジェクトが既にある場合は、「Amazon FreeRTOS Github リポジトリ移行ガイド」を参照してください。

序章

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

注記

FreeRTOS デモをセットアップして実行するには、FreeRTOS の開始方法 の手順に従います。

機能

このデモでは、以下のステップを実行する方法を示す単一のアプリケーションタスクと例を作成します。

  • AWS IoT エンドポイント上の HTTP サーバーに接続する。

  • POST リクエストを送信する。

  • レスポンスを受信する。

  • サーバーから切断する。

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

メモリメトリクスを示すログ出力で、AWS IoT デモの初期化、TLS セッション確立、HTTP POST リクエスト、デモが正常に完了したことを示すメモリメトリクスを示します。

AWS IoT コンソールによって、次のスクリーンショットのような出力が生成されます。

2020 年 11 月 20 日 19:09:09 UTC に AWS IoT コンソールに「Hello from AWS IoT console」というメッセージが表示され、トピックが公開されました。

ソースコードの編成

デモソースファイルの名前は http_demo_mutual_auth.c です。このファイルは、freertos/demos/coreHTTP/ ディレクトリと GitHub ウェブサイトにあります。

AWS IoT HTTP サーバーに接続する

connectToServerWithBackoffRetries 関数は、AWS IoT HTTP サーバーに対して相互認証 TLS 接続の確立を試みます。接続が失敗すると、タイムアウト後に接続を再試行します。タイムアウト値は、最大試行回数に達するか、最大タイムアウト値に達するまで、指数関数的に増加します。RetryUtils_BackoffAndSleep 関数は、指数関数的に増加するタイムアウト値を提供し、最大試行回数に達したときに RetryUtilsRetriesExhausted を返します。connectToServerWithBackoffRetries 関数は、設定された試行回数に達してもブローカーへの TLS 接続を確立できない場合に、失敗ステータスを返します。

HTTP リクエストの送信とレスポンスの受信

prvSendHttpRequest 関数は、AWS IoT HTTP サーバーに POST リクエストを送信する方法を示します。AWS IoT の REST API へのリクエストの作成の詳細については、「デバイス通信プロトコル - HTTPS」を参照してください。レスポンスは、同じ coreHTTP API 呼び出しである HTTPClient_Send で受信されます。