【RaspberryPi】Node-REDでWebアクセス(クライアント)追記

前回のエントリーを公開後にコメントを頂いたので、それについて調べてみました。

指摘いただいたのは以下の2点

  • アクセス先がhttpsなので、「SSL/TLS認証の有効化」で、証明書の確認をしたほうが安全です。そのままでもアクセスはできますがサーバ証明書の確認をしてくれませんので、中間者攻撃に対応できません。
  • http-requestノードの後にJSONノードをつけてオブジェクトに変換されていますが、http-requestノード自体にその機能があります。アクセスエラー時には文字列になりますが、それはJSONノードでも同じなので、ノードの数が減らせます。

それぞれについてやってみます。

【参考】 uepon.hatenadiary.com

SSL/TLS認証の有効化する

まずは、SSL/TLS認証の有効化を行ってみます。

http requestノードをダブルクリックして、プロパティ編集画面に入ります。 まずは、【SSL/TLS認証の有効化】のプロパティにチェックボックスをチェックをいれてます。

f:id:ueponx:20190923081928p:plain

続いてその下にある【TLS設定】のプルダウンを【新規にtls-configに追加…】になっていることを確認し、右にある【鉛筆のアイコン】(編集)のボタンをクリックします。

f:id:ueponx:20190922074314p:plain

クリックすると、【tls-configノードを編集】画面が表示されるので、【サーバ証明書を確認】のチェックボックスにチェックを入れて、【更新】ボタンをクリックします。

f:id:ueponx:20190922074303p:plain

変更後は【TLS設定】のプルダウンがTLS設定に値が変更されています。あとは【完了】ボタンをクリックすれば、サーバ証明書の確認を行ってくれるようになります。サーバのURLに入っている、確認するサーバが異なる場合には【サーバー名】のプロパティSNIの記述をすれば設定も可能です。

f:id:ueponx:20190922074732p:plain

これで安全性が上げることができました。

http requestノードから直接JSONオブジェクトを出力する

以前作成したものはデータをhttp requestノードで取得してからJSONノードで変換してアクセス時のデータをJSONオブジェクトとして取得するというものでした。http requestノードの設定を変更すれば、このノードのみでJSONオブジェクトを取得できるようです。

http requestノードをダブルクリックして、プロパティ編集画面に入ります。 【出力形式】のプロパティのプルダウンをクリックをして、【UTF-8文字列(デフォルト値)】から【JSONオブジェクト】に変更します。

f:id:ueponx:20190922074307p:plain

これで設定は完了です。設定を変更したら【完了】ボタンを押します。

ちなみに注釈にもありますが、JSONデータとしてパースができない場合には文字列としてノードから出力されるとのことです。

f:id:ueponx:20190922074310p:plain

後続のJSONノードはこれで減らす事ができます。フローの変更後は忘れずに【デプロイ】ボタンをクリックしましょう。 これでフローはスッキリしますね。

終わりに

さらなる情報を頂きました…

flows.nodered.org

パタリ…すでにカスタムノードがあったとは…

【Node-RED 関連エントリ-】

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

/* -----codeの行番号----- */