どんな状況で発生したか
事件は 手持ちの サーバの1基で発生しました
symbol-bootstrapの命令を実行した時に
見慣れない表示が出るのに気付きました
(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
上記の表示ですね
これ 後で知ったんですが nodejsの ver.21で symbol-bootstrapを使うと出て来ます
事件当時 この表示をどうにか出ない様にしたくて
①sudo npm install -g symbol-bootstrap
と
② nodejsの downgrade
を行った直後から
symbol-bootstrapの
config --upgrade
start --upgrade
decrypt
等 node passwordを求められる命令で
passwordが通らなくなりました
target/addresses.ymlの中の秘密鍵は通常 暗号化されていますが
この暗号化された秘密鍵の復号の為の passwordが通らない状態ですね
nodeを建てた直後に symbol-decrypt命令で復号した addresses.ymlを保存していたので
passwordが通らなくなった target/addresses.ymlを 復号したものと入れ替えた後
symbol-bootstrap start --upgradeを実行して 事無きを得ました
symbol-bootstrapの再インストールと nodejsの downgradeを行った タイミングで発生した様です
が
まだどちらかが直接の原因かははっきりしていません
なのでまず nodeを新しく作った時は 必ず addresses.ymlの復号した fileを
保存する事を推奨します
addresses.yml
の復号方法
symbol-bootstrap decrypt --source target/addresses.yml --destination d_addresses.yml
命令の最後のd_addresses.yml
は 好きな file名で構いません
自分の場合は add
やda
とか適当な名前で保存しています
ケースによっては 復号が出来ない場合もあるかも知れません
その時の為に 何度も言いますが
まず nodeを建てた時には 必ず addresses.yml
の復号を行ったものを保存して下さい
これさえあれば nodeを再生出来ますし 再生する時に node passwordは新たに設定出来ます
冒頭の
(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
上記表示は nodejsの ver.21(latest)でのみ出ています
node.jsの downgrade(latestから stableへ)を行う
参考ページ
具体的には
sudo npm install n -g
sudo n stable(最新にしたい時は sudo n latest)
sudo apt purge -y nodejs npm
exec $SHELL -l
node -v
上記の手順で node.jsを ver.21(latest)からver.20(stable)へ downgradeしました
この後では
(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
の表示は出なくなりました
2024.01.28 対処方法が見つかりました
symbol-bootstrap
を マニュアルビルドする
gitの インストール
sudo apt install -y git
symbol-bootstrapの公式から ソースコードを ダウンロードする
home ディレクトリで作業した方が良いかもです
cd
git clone https://github.com/fboucquez/symbol-bootstrap
symbol-bootstrap
ディレクトリに入り package.json
を編集する
cd symbol-bootstrap
vi package.json
赤線の部分は元々 "1.1.10" になっていますが
元の symbol-bootstrapと区別しやすい様に ここを
"1.1.10d"とします
これを保存します
symbol-bootstrap@1.1.10d
のインストール
npm install
この時点ではまだ symbol-bootstrap -v
で表示される ver.は "1.1.10"のままです
更に コマンドを実行します
npm run build
sudo npm install -g .
これで symbol-bootstrap@1.1.10d
の インストールは完了です
symbol-bootstrap -v
symbol-bootstrap
の ver.が "1.1.10d"になっていれば良いです
これで
今まで パスワードが通らなかった addresses.yml
を復号してみましょう
symbol-bootstrap decrypt --source addresses.yml --destination d_addresses.yml
パスワードが通り 復号された ファイルd_addresses.yml
が出来ています
特に node.jsや symbol-bootstrapの ver.戻しや
osの 再インストールは必要ありませんでした
※2024.01.29追記
記憶違いと 後から事実の相違が見つかった為 本文を手直ししました
時系列で見直すと
この サーバは 元々以前に nodejsを nで 21(latest)に アプデしておいたものです
(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
この表示は nodejs 21(latest)で起こります その他の ver.ではこの表示は出ません
この状態で
nodeを作成したんですが
symbol-bootstrapを使う度に 上述の
(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
の表示がうざかったので
まず sudo npm install -g symbol-bootstrap
を実行してみました
それでもこの表示がまだ出ていたので
nを使って 20(stable)に ダウングレードしました
これらの作業の直後から この サーバ上で それまでに作成した nodeの addresses.yml
が全て復号出来なくなりました
これ以降に作成した nodeの addresses.yml
は 復号が出来ましたが
それ以前に作成したものは復号出来なくなったと言う訳です
これらの この サーバで復号出来なくなってしまった addresses.yml
は
他の 以前から使っている サーバでは復号出来ました
この サーバで変化してしまった後に作成した addresses.yml
は
最近借りて セットアップした サーバ上では復号出来ました
最近借りて セットアップした サーバ上で作成した addresses.yml
も
この 変化してしまった サーバで復号出来ました
新規で nodejs12~21の ver.と
ubuntu20/22でそれぞれ セットアップした サーバで試した所
そのどれもが
最近借りて セットアップした サーバとこの変化してしまった サーバの方と
互換性がありました
思い付く方法を試した結果
symbol-bootstrapを
sudo npm install -g symbol-bootstrap
では無く
githubからの マニュアルビルド(上記対処方法)で
サーバが変化する以前の状態に戻せた次第です
原因が判明しました
2024.01.30追記
今度は新規で セットアップした サーバを使います
nodejs/osの ver.の検証はここで行っていたんですが
現在は
ubuntu22.04
nodejs v20.11.0
上述の githubから直接 buildしたsymbol-bootstrap@1.1.10d
になっています
この サーバは 最初に セットアップした時は
元の addresses.ymlが復号出来ない状態だったのを
元の addresses.ymlが復号出来る状態に(意図的に)現在は してあります
これを これから
試しに 良く知られている
sudo npm install -g symbol-bootstrap
これを実行します
只の symbol-bootstrap@1.1.10
に戻りました
これで 元の 先程まで復号出来ていたaddresses.yml
の復号を試みましたが
パスワードが通らなくなりました
これとは逆に最近借りて セットアップした サーバの addresses.yml
が
復号出来る様になりました
つまり結論
直接の原因は
最近行った
sudo npm install -g symbol-bootstrap
これだけです
※ここから又 githubから symbol-bootstrapを直接 buildした所
再び元の状態に戻せています
ちなみにどちらの状態でも
nodeを作った際に復号さえしておけば
特に パスワードが通らなくなっても再生出来ます
ただし暗号化された addresses.ymlは 他の サーバで パスワードが通らない事が起こる可能性を孕みます
これが現在の symbol-bootstrap
の状況です
symbol-bootstrap
は 最終の updateから だいぶ時間が経っていますので
特に 再インストールする必要が無かった為
以前から建っていた nodeで たまたま最近 symbol-bootstrapの更新を行った場合
nodeの パスワードが通らなくなる事例が発生した
と考えられます
最近 symbol-bootstrapを更新した方は 一度 上記の復号命令を試してみて下さい
もしかしたら あなたのその サーバも なっちゃってるかもよ!?
いつからこうなったかが不明なんです
もし nodeの updateの時に nodeの パスワードが通らなくなった時は
上述の githubからの 直接buildを試してみて下さい
おまけ チキチキお前の サーバはどっち側〜!?
ドンドンパフパフ ドンドンンパフパフ
さあ!自分の サーバが どっち側なのか?試してみよう!ドンドンンパフパフドンドンンパフパフ
えっと適当な ディレクトリを作ってその中でやってみて下さいませ
wget 6.dusanjp.com/decrypt/light
symbol-bootstrap decrypt --source light --destination l
上記の コマンドで無事復号出来た方は 光属性です
あっと パスワードは12345
です
では次はこっち
wget 6.dusanjp.com/decrypt/darkness
symbol-bootstrap decrypt --source darkness --destination d
こちらも パスワードは12345
ですね
おめでとう御座います!こちらが復号出来たあなたは闇属性ですね
そうです!暗黒の騎士です!