LoginSignup
0
1

WebSocketノードのSecure対応について (経緯まとめ)

Last updated at Posted at 2024-05-22

はじめに

FacebookでNode-RED MCU EditionのWebSocketノードが動かないというメッセージをもらい、調査開始〜対応完了までの経緯をまとめておきます。

スクリーンショット 2024-05-22 17.52.44.png

調査

Node-RED MCU Editionの書籍を執筆した時点で、Secure通信(HTTPS/MQTTS)は未対応でした。

その後、HTTPS/MQTTSに対応し、補足書として執筆しました。

@mshioji 氏が対応の経緯をまとめています。

当初は同じ手順で動作することを期待しましたが、残念ながらWebSocketはSecure通信に未対応と判明しました。
GitHubのdiscussionsで議論を始めました。

Secure対応

discussionsの中でWebSocketのSecure対応が遅れている理由を教えていただきましたが、調査を進めるとSecure対応が可能ということが分かりました。
Moddable SDK側の変更が必要ですが、Node-RED MCU EditionからWebSocketのSecure通信が可能(Node-RED MCU Edition側のmasterブランチは反映済)になりました。

Moddable SDK側の変更箇所はたった1行だけです。

$MODDABLE/examples/io/tcp/websocket/WebSocket.js
(60行目)
config = device.network.wss;

config = {...(options?.wss ?? device.network.wss)};

2024年5月29日追記

2024年5月20日にModdable SDKのmasterブランチに反映されました。

WebSocketノードでSecure通信を行う手順

HTTPS/MQTTSと同じ手順で、WebSocketノードでSecure通信が可能になりました。

「inject」ノード、「WebSocket out」ノード、「debug」ノードをフローエディタに配置します。

1.jpg

「WebSocket out」ノードを編集し、URLにWebSocketのURLを入力します。

1_1.jpg

TLS設定を有効にします。

1_2.jpg

Node-RED MCUの「Build」を実行し、「xsbug」のエラー画面でCA証明書の種類(CA109の部分)を確認します。

1_3.jpg

「WebSocket out」ノードのTLS設定の編集画面で、CA証明書に
$MODDABLE/modules/crypt/data-pem
ディレクトリのPEMファイルを指定します。

1_4.jpg

もう一度、Node-RED MCUの「Build」を実行するとWebSocketのSecure通信が成功します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1