【Umbrel】LNDのtls.certってどんな時使うの?

【Umbrel】LNDのtls.certってどんな時使うの?

LNDをラズパイUmbrelの外から暗号通信で操作する時に必要

 TorやtailscaleのようなVPNなら経路が暗号化されているから、この場合は必要ない。必要ないけどアプリによっては警告してくるかもね(Zeus)。

 LNDを操作するにはREST,gRPCというAPI(アプリケーション プログラミング インターフェース)を使って操作する。このAPIのためにRESTには8080番、gRPCには10009番のポート番号が開放され接続待ち状態になってる。
 REST,gRPCの通信にはインボイスやらお金に関する情報やLND操作権限を示すマカロン(macaroon)が含まれるので暗号通信でないと中間者に盗み見られる可能性が大いにある。REST,gRPCも技術ベースはhttpなので、REST,gRPCもhttpsのごとくTLS証明書(またはSSL証明書とも呼称)で暗号通信しましょうってことです。
 この証明書はいわゆるオレオレ証明書(認証局が署名してない証明書)です。それで問題ない。だってこの通信を必要とする人はLNDノード管理者だけで、あまぞんドットコムのように不特定者に暗号通信させる必要はまっっったくないから。

そのLND操作APIで暗号通信に必要なtls.certはどこにあるの?

ファイルパスは /home/umbrel/umbrel/lnd/tls.cert
FileZillaとかWinSCPとかでUmbrelと接続して上記の場所を覗くといいよ。
※Umbrel v0.5 から /home/umbrel/umbrel/app-data/lightning/data/lnd/tls.cert

デフォルトの状態はどうなってるの?

Umbrelアプリからの暗号通信できるけど、そこから以外は出来ない。

tls.certの中身を見るとループバック(127.0.0.1と0:0:0:0:0:0:0:1)とdocker上のIPアドレス(10.21.21.9)、ホスト名(umbrel.local)が含まれている。
※ホスト名デフォルトumbrel.localです。下記画像は自分の実験用Umbrelにblackthunderとホスト名と設定しちゃってるのでそのようになってます。

外から操作したい。どうすればいい?

注意:Umbrel v0.5に対応していません。

lnd.confに設定を追加する。設定後にLNDの再起動つまりUmbrelの再起動をするとtls.certが更新される。更新後tls.certを使えばいい。

tlsextraipというオプションで外からUmbrelに接続するためのグローバルIPアドレスやUmbrelに割り当てられたtailscale IPアドレスを指定する。
デフォルトのlnd.confはこうなってる。(一部抜粋)
※Umbrel v0.4まで

[Application Options]
listen=0.0.0.0:9735
rpclisten=0.0.0.0:10009
restlisten=0.0.0.0:8080
maxpendingchannels=3
minchansize=10000
accept-keysend=true
tlsextraip=10.21.21.9
tlsextradomain=umbrel.local
tlsautorefresh=1
tlsdisableautofill=1

それをこのように追加

[Application Options]
listen=0.0.0.0:9735
rpclisten=0.0.0.0:10009
restlisten=0.0.0.0:8080
maxpendingchannels=3
minchansize=10000
accept-keysend=true
tlsextraip=10.21.21.9 これは元からあったdocker上のIPアドレス
tlsextraip=100.117.193.37 これはtailscaleが割り当てたIPアドレス
tlsextraip=XXX.XXX.XXX.XXX これはグローバルIPアドレス
tlsextradomain=umbrel.local
tlsautorefresh=1
tlsdisableautofill=1

 tailscale IPアドレスについてはtailscaleをインストールしてログインすれば自動的に割り当てられる。その時表示されるIPアドレスを指定する。
 グローバルIPアドレスは各自状況が異なる。たとえばホームルータのWAN側インターフェースにプロバイダがグローバルIPアドレスを割り当てているなら、これを指定する。ホームルータに8080番、10009番を開放してUmbrelへ転送するようにポートフォワードを設定する必要がある。
※プロバイダによってはグローバルを割り当てずにローカルIPアドレスを割り当てるとか。その場合は諦めて。

 スマホにライトニングウォレットを入れて自分のUmbrelに接続。モバイル網もしくは公衆WiFi網から接続する場合はグローバルIPアドレスを含める必要がある。
 外のネットワークでは使用せず、Umbrelと同じLAN内で使う(動作確認でつかうだけとか)ならグローバルIPアドレスは不要で、ローカルIPアドレスを含めれば良い。
 同一tailscaleネットワークにスマホやVPS、Umbrelを追加してそこで暗号通信が必要ならtailscale IPアドレスを含める。tailscaleはVPNなので元より暗号通信となっているが、アプリは自分より下の通信レイヤがどうなっているか認識しないのでtls.certがないと動かないケースがある。

更新後のtls.certの中身を見るとtailscale IPアドレスとグローバルIPアドレスが追加されました。これを使って外から暗号通信しましょう。

<追記>
Chaintope CTO 安土氏によるLNDのgRPC/RESTインターフェースについての解説動画。macaroonについても触れられている。見るべし。

Remaining : 0 characters / 0 images
100

Sign up / Continue after login

Related stories

Writer

甘いもの大好きメタボ猫。マイペースなのはしょうがない。

Share

Popular stories

【Umbrel】BlueWallet Lightning & tailscaleで便利で快適なLightningウォレットを作ろう!

273

【Umbrel】LNURLが使いたいから自分で環境つくってみた

146

SaruTobi LN / Swing Thingモードで遊ぼう! 基本的な飛び方について

98