私は小さな組み込みLinuxボックスから小さな中継局を作成することに取り組んでいます。いくつかのセンサーが接続されており、HTTPPOSTを介してデータをサーバーに転送します。現在、サーバーは、一意のID(eth0のMACアドレス)とともにメッセージを受け入れるだけです。
これを拡張して、ある種のセキュリティを含めたいと思います。最小限の構成でこれらの小さなデバイスを展開できるようにしたいと思います。ベースファームウェアをデバイスにコピーし、フィールドに接続して、自己登録したいと思います。初めて接続するときは、サーバーとデバイスに、指紋を保存できる何らかのネゴシエーションを実行してもらいたいと思います。その後のリクエストでは、その指紋を使用してデバイスを認証/検証できます。
そうすれば、デバイスがその一意のIDで登録されると、そのIDからのすべてのデータが同じデバイスからのものであることが保証されます。ルージュデバイスまたはデバイスのセットが登録されている場合は、それらを削除します(IPを保存して、不明な範囲で削除してブロックできるようにします)。
私の質問は、これを行うための最良の方法は何ですか?SSHフィンガープリントのアイデアを思い出します。ここでは、サーバーに初めて接続したときにサーバーフィンガープリントを取得します。将来のリクエストで別のフィンガープリントが生成された場合、サーバーのキーが実際に再生成された場合(たとえば、古いSSHキーを保存せずに再インストールした場合)、大きな警告が表示され、authorized_keysファイルからフィンガープリントを手動で削除する必要があります。
おそらくHTTPでこのようなものがあり、事前共有キーを使用する必要がない可能性がありますか?
重要な場合、クライアントはPython2を実行しており、接続先のサーバーは主にTomcat上のScalaで記述されています。