工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial Internet of Things >> モノのインターネットテクノロジー

3ドルのWiFiデバイスに安全な組み込みWebサーバーをインストールする方法

組み込み開発の開始は困難で費用がかかる可能性がありますが、この記事では、安全な組み込みWebサーバーを備えたWiFiチップ上でFreeRTOSとlwIP TCP / IPスタックを超低コストで30分未満で起動する方法を紹介しますコストデバイス。

セキュア(TLS)対応サーバーを使用する理由

>

ブラウザは、ブラウザバーで標準(HTTP)サーバーに「信頼できない」というフラグを立て始めており(下の図2を参照)、安全なサーバーはエンドユーザーにとってより信頼できるように見えます。これについては、以下の「セキュリティに関する考慮事項」セクションで詳しく説明します。

ESP8266WiFiチップとミノーサーバー

ESP8266は最低$ 1で入手できますが、USBを含むボードを使用することをお勧めします。ファームウェアのフラッシュにはUSBが必要です。オンボードUSBがない場合は、USBからTTLへのコンバーターの使用を含む追加の手順が必要になります。 USBを備えたすぐに使用できるESP8266ボードは、最低$ 3で購入できます。

低コストのESP8266WiFiチップは学習目的には最適ですが、特に暗号化の実行などのCPUを集中的に使用するタスクでは低速です。 CPUを集中的に使用するタスクで低速のチップを使用する場合は、実際に設計について考える必要があります。

ESP8266は組み込みチップに適した80Mhzで動作しますが、コードの実行はSPIメモリを介して実行されるため非常に低速です。このデバイスでTLS対応サーバーを実行すると、リソースに制約のあるマイクロコントローラーの実際的な制限に関して実際のウェイクアップコールが提供され、低速のマイクロコントローラーで実行できることについての優れた紹介が提供されます。選択した安全なWebサーバーの種類と、Webアプリケーションの設計は、低速のデバイスにとって重要になります。

この記事では、ESP8266でMinnowサーバーをコンパイルして実行する方法について説明します。 Minnowサーバーとリファレンスの例はGitHubで入手できます。

私は最近、ここembedded.comでミノーサーバーに関する記事を公開しました。この記事では、Minnowサーバーを使用して最新のWebベースのデバイス管理アプリケーションを作成する方法について説明します。この記事では、TLSを使用するときにいわゆるシングルページアプリケーション(SPA)でWebSocketサーバーを使用する利点についても説明します。 ESP8266用に同じサンプルコードを準備してコンパイルするので、この記事を読むことをお勧めします。

はじめに

esp-open-rtosプロジェクトによって提供されるESP8266FreeRTOS / lwIP環境を使用しますが、心配しないでください。複雑なesp-open-rtosセットアップを実行する必要はありません。代わりに、使いやすいWebベースのIDEを備えた、事前構成された完全にすぐに使用できる環境を使用します。

FreeRTOS / lwIP ESP8266IDEをダウンロードします

Real Time Logicに移動し、準備したESP8266IDEをダウンロードします。教育目的で設計されたIDEには、使いやすいWebベースのCソースコードIDEがバンドルされた事前構成済みのesp-open-rtosが含まれています。 IDEにはVmWareまたはVirtualBoxが必要です。使いやすいので、VirtualBoxよりもVmWareの方が好きです。 VmWareは非営利目的で無料で使用できることに注意してください。

ESP8266 IDEには組み込みのTLSスタック(SharkSSL)も含まれており、MinnowサーバーはSharkSSLでコンパイルされると自動的にTLSを使用します。

ESP8266ボードなしでESP8266IDEの使用を開始することはできますが、コンパイルされたコードをアップロードして実行することはできません。つまり、IDEをダウンロードして、ESP8266でコードを実行することを除いて、このチュートリアルのすべての手順に従うことができます。

以下の図1のスクリーンショットは、仮想マシンと、仮想マシンに接続されたWebベースのIDEを示しています。仮想マシンがESP8266USB接続の所有権をどのように取得したかに注目してください。 WebベースのIDEはこれを検出し、ESP8266が接続され、新しいファームウェアでフラッシュする準備ができていることを示します。

クリックして大きな画像を表示

図1:仮想マシンのIPアドレスに接続されたWebベースのIDE。 (出典:Real Time Logic)

図1のスクリーンショットは、ブレッドボードを介してLEDに接続されたESP8266を示しています。サンプルアプリケーションで使用される外部LEDを制御する場合を除いて、追加のLEDやブレッドボードは必要ありません。

VMのIPアドレスは、図1とは異なる可能性が高いことに注意してください。IPアドレスの仮想マシンウィンドウをクリックしてください。ウィンドウが空白の場合は、ウィンドウをクリックしてからEnterキーを押します。 Web IDEを開くには、ブラウザにこのIPアドレスを入力する必要があります。

Minnowサーバーとサンプルコードのインストール

MinnowServerのリファレンス例はESP8266IDEに含まれていないため、個別にインストールする必要があります。図1は、「ESP / ms」ディレクトリにすでにインストールされているMinnowServerの例を示しています。 MinnowサーバーはLinuxコマンドラインからインストールする必要がありますが、Linuxを使用したことがなくても心配する必要はありません。用意したコマンドをコピーして貼り付けるだけです。次の図は、http:// vm-ip-address / webshel​​l /で入手可能なLinuxWebシェルに貼り付けられているMinnowServerインストールコマンドのスクリーンショットを示しています。

クリックして大きな画像を表示

図2:LinuxWebシェルに貼り付けられたMinnowServerのインストールコマンド。 (出典:Real Time Logic)

ブラウザにWebシェルのURLを入力すると、ログインするように求められます。ユーザー名はsharkssl、パスワードはSharkSSLです。

GitHubのESP8266チュートリアルでは、仮想マシンの構成、すべてのインストール、Webサーバーの例のコンパイル、ファームウェアのフラッシュの方法について説明しています。次のビデオでは、すべてを段階的に説明することでプロセスを簡素化しています。

ビデオ1:Minnow Serverの例をダウンロードしてインストールし、コードをコンパイルしてアップロードする方法。 (出典:Real Time Logic)

セキュアと非セキュア

Minnowサーバーは、セキュアモードまたは非セキュアモードで使用でき、ESP8266 IDEおよびSharkSSLで使用すると、自動的にセキュアモード(TLS)を使用します。デバイスでTLS対応のWebサーバーを使用すると、さらに複雑になり、エンドユーザーはSSL証明書を処理する管理上の負担を負うことになります。上記のビデオでは、ブラウザに認証局(CA)証明書をインストールすることにより、ブラウザに表示される証明書エラーを削除する方法を示しています。 CA証明書は、Webサーバーの例で証明書に署名するために使用された証明書です。

組み込みデバイスは通常、保護されたプライベートネットワークにインストールされますが、多くのお客様は依然としてWebサーバー接続でTLSを使用することを要求しています。既知の認証局がIPアドレスまたは非標準(プライベートネットワーク)名に署名しないため、プライベートネットワークでTLS対応サーバーを使用することには問題があります。 1つのオプションは、独自の認証局になることです。これについて詳しく知りたい場合は、チュートリアル「認証局として機能する方法」を確認してください。

上記のように、ESP8266は低速です。 TLSはCPUを非常に集中的に使用するため、接続して接続を確立するのに時間がかかることがわかります。通信にWebSocketを使用するシングルページアプリケーションの例は、CPUに制約のあるデバイス向けに最適化されていますが、初期の非対称暗号化(TLSハンドシェイク)には時間がかかります。特に、適切な設計手法に従わず、すべてのTCP接続を開く一部のブラウザーでは時間がかかります。完全なTLSハンドシェイクが必要です。最新のWebブラウザーと低速のマイクロコントローラーの問題の詳細については、チュートリアル「Minnowサーバーを使用したシングルページアプリの作成」を参照してください。このチュートリアルでは、問題について詳しく説明しています。


モノのインターネットテクノロジー

  1. クラウドテクノロジーを保護する方法は?
  2. GoogleCloudにWordPressをインストールする方法
  3. IoT製品とソリューションを安全にする方法
  4. 必要なIoTモジュールのタイプを特定する方法
  5. ファジングテストがIoTデバイスのセキュリティをどのように強化するか
  6. Webから湿度/温度を取得する
  7. WebサーバーとしてのRaspberryPi 4 [独自のWebサイトを作成]
  8. IoTデバイス組み込みハードウェアハッキングの概要
  9. WiFi通話とは何ですか?それはどのように機能しますか?
  10. ドックレベラーの取り付け方法
  11. サーバーの自動化がどのようにFANGに到達したか