HTTPS化(マイコンHTTPサーバー)

最終更新日:2022/12/22
作成日:2021/4/7

2022年12月22日 ブラウザに登録されたリンクが HTTPS:// と置き換わってしまうのでマイコンのWebServerもHTTPS対策が必要です。

monoist 2018年09月18日の記事で『組み込み技術者向けTLS1.3基礎解説(前編):まずはSSL/TLSについて知ろう』と云うのがあります。IoTデバイスでもセキュア化は必然の流れのようです。

マイコンにWebserverを構築したときもHTTPS化が出来るのか?結論的には出来るようです。

クライアントブラウザに重要な情報を入力させサーバにpostするような仕組みが使われていた場合、気にしておくべきです。
Localだから大丈夫という考えがどこまで通用するのか判りませんが、方法論だけは検討しておきたいです。



2022年12月22日 ブラウザに登録されたリンクが HTTPS:// と置き換わってしまうのでマイコンのWebServerもHTTPS対策が必要です。

Braveブラウザで http://192.168.0.199/ というローカルのNTPd/WebServerにアクセスしたところ、Braveのカレントページに登録されました。このときURLは https://192.168.0.199/ と置き換わってしまい、そのまま実行すると ERR_CONNECTION_REFUSED となります。当然、手動で http://192.168.0.199/ と修正すれば期待通りの表示となります。
つまりマイコンもWebServer側でHTTPS対策が必要なのだと感じました。
外部サーバにアクセスするのは問題があるので、鍵処理の出来るChip追加で実現したいです。MS1000というチップが安直に利用できるといいのですが、、、

2023年1月19日 Arduino-PicoのExampleを久しぶりに漁っていたところ、BearSSL_serverというExampleスケッチを見つけました。作者はEarle F. Philhower, III氏です。期待できます。ちょっと調査します。

まずExampleに掲載されていたコメントを解釈しますと、

シンプルな HTTPS サーバーは、Pico W の自己署名証明書を使用して実装されています。
これは、Pico W に HTTPS Web サイトを実装する最良の方法ではありません。
これを行うより良い方法については、ESP8266WebServerBearSSL の例を参照してください。

SSL 証明書に関する重要な注意事項

1. 独自の証明書を使用/生成する
サンプルの自己署名証明書がこの例に含まれていますが、実際の展開では独自の SSL 証明書を
使用することが絶対に不可欠です。
証明書とキーを持っている人なら誰でもトラフィックを復号化できる可能性があるため、
独自のキーは安全な方法で保管し、パブリック ネットワークからアクセスできないようにする
必要があります。

2. 独自の証明書/キー ペアを生成する方法
OpenSSL を使用して自己署名証明書を生成するのは簡単です 
openssl req -x509 -nodes -newkey rsa:2048 -keyout key.pem -out cert.pem -days 4096
もちろん、商用の信頼できる SSL プロバイダーを使用して証明書を生成することもできます。
この例には、*SAMPLE* 証明書とキーが含まれています。
それらはリポジトリのすべてのコピーと共有されるため、安全ではありません。
そのため、独自のプロジェクトでサンプル証明書、キー、または CAS を使用しないでください!!!
この例を実行してから、サーバー https://IP に接続してみてください。
この例は、パブリック ドメインにリリースされています。

ソースコードを見ると、ソースコード内に

server_private_key[]

server_cert[]

server_private_key[]

が埋め込まれています。手始めに仕組みを学ぶ為のスケッチという事でしょう。しかし実装には向かないと云うことかと思います。
また、なぜかPicoW用なのです。Webserver構築のサンプルではありますが、W5500-EVB-Picoに対しては素直に移植出来ないみたいで残念です。

ところで BearSSL について検索すると https://bearssl.org/ のサイトがヒットしました。このライブラリは、Cで記述されたSSL / TLSプロトコルの実装とあります。このライブラリを使用するには約20キロバイトのコンパイル済みコードが搭載でき、25キロバイトのRAMが利用できる必要があるようです。25kBRAMということで、BluePillでの実装は出来ないけどPicoなら実装出来るという事が判ります。

Earle F. Philhower, III氏が書かれているように、まずはExampleスケッチがそのままビルド出来実行確認出来る環境を検討しないと先に進むのは大変そうです。


戯言(nonsense)に戻る


問い合わせ頁の表示


免責事項

本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。

本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります

標・登録商標

Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。