前回のエントリーを公開後にコメントを頂いたので、それについて調べてみました。
指摘いただいたのは以下の2点
- アクセス先がhttpsなので、「SSL/TLS認証の有効化」で、証明書の確認をしたほうが安全です。そのままでもアクセスはできますがサーバ証明書の確認をしてくれませんので、中間者攻撃に対応できません。
- http-requestノードの後にJSONノードをつけてオブジェクトに変換されていますが、http-requestノード自体にその機能があります。アクセスエラー時には文字列になりますが、それはJSONノードでも同じなので、ノードの数が減らせます。
それぞれについてやってみます。
SSL/TLS認証の有効化
する
まずは、SSL/TLS認証の有効化
を行ってみます。
http request
ノードをダブルクリックして、プロパティ編集画面に入ります。
まずは、【SSL/TLS認証の有効化】のプロパティにチェックボックスをチェックをいれてます。
続いてその下にある【TLS設定】のプルダウンを【新規にtls-configに追加…】になっていることを確認し、右にある【鉛筆のアイコン】(編集)のボタンをクリックします。
クリックすると、【tls-configノードを編集】画面が表示されるので、【サーバ証明書を確認】のチェックボックスにチェックを入れて、【更新】ボタンをクリックします。
変更後は【TLS設定】のプルダウンがTLS設定
に値が変更されています。あとは【完了】ボタンをクリックすれば、サーバ証明書の確認を行ってくれるようになります。サーバのURLに入っている、確認するサーバが異なる場合には【サーバー名】のプロパティSNIの記述をすれば設定も可能です。
これで安全性が上げることができました。
http request
ノードから直接JSONオブジェクトを出力する
以前作成したものはデータをhttp request
ノードで取得してからJSON
ノードで変換してアクセス時のデータをJSONオブジェクトとして取得するというものでした。http request
ノードの設定を変更すれば、このノードのみでJSONオブジェクトを取得できるようです。
http request
ノードをダブルクリックして、プロパティ編集画面に入ります。
【出力形式】のプロパティのプルダウンをクリックをして、【UTF-8文字列(デフォルト値)】から【JSONオブジェクト】に変更します。
これで設定は完了です。設定を変更したら【完了】ボタンを押します。
ちなみに注釈にもありますが、JSONデータとしてパースができない場合には文字列としてノードから出力されるとのことです。
後続のJSON
ノードはこれで減らす事ができます。フローの変更後は忘れずに【デプロイ】ボタンをクリックしましょう。
これでフローはスッキリしますね。
終わりに
さらなる情報を頂きました…
パタリ…すでにカスタムノードがあったとは…
【Node-RED 関連エントリ-】