symbol-node-configuratorを使ってウォレットで作成したアカウントの秘密鍵からノード証明書を作る

はじめに

「一体コレが何の役に立つんだい」
「symbol-bootstrap 使えばいいじゃん」
そんな声が聞こえてきそうです。

「ウォレットで作ったアカウントをノードメインアカウントにしたいんじゃ~」とか言う変態向けです。

証明書の作成

必要なパッケージをインストール。

Bash
pip install symbol-sdk-python pyopenssl zenlog
Bash

symbol-node-configurator をインストール。
新しい SymbolSDK を使用するカスタマイズ版です。
設置場所はどこでも良いです。今回の例は /opt に設置した場合です。
また、証明書は /opt/symbol-node-configurator/cert に作成します。

Bash
cd /opt
git clone https://github.com/ccHarvestasya/symbol-node-configurator.git
cd symbol-node-configurator
Bash

秘密鍵の準備

本来なら下記のように OpenSSL を使って ca.key.pem を作成するのですが…

Bash
openssl genpkey -algorithm ed25519 -outform PEM -out ca.key.pem
Bash

表題の通り今回はウォレットまたは Symbol CLI で作成したアカウントの秘密鍵を使用します。
ca.keyというファイルに作成したアカウントの秘密鍵を保存します。

Bash
vi ca.key
Bash
ca.key
2DE0B46CBF0367A513CE7DFF...以下略
Plaintext

PEM ファイル作成

秘密鍵から PEM 形式の秘密鍵を生成します。

Bash
python3 /opt/symbol-node-configurator/pemtool.py --input ca.key --output ca.key.pem
Bash

ca.keyは、もう必要ないので削除。

Bash
rm ca.key
Bash

ノード証明書作成

ca.key.pem を元に cert ディレクトリにノード証明書を作成します。
なお、 cert ディレクトリは自動で作成されます。

Bash
python3 /opt/symbol-node-configurator/certtool.py --working cert --name-ca "Symbol CA" --name-node "Symbol Node" --ca ca.key.pem
Bash

証明書が 2 つ作成されます。
メイン(ノードアカウント公開鍵): cert/ca.crt.pem
トランスポート(ノード公開鍵): cert/node.crt.pem

2 つの証明書を連結

メイン、トランスポートの順で連結して cert/node.full.crt.pem を作成します。

Bash
cat cert/node.crt.pem cert/ca.crt.pem | tee cert/node.full.crt.pem
Bash

確認

ノード証明書をサッと参照するとトランスポートの証明書のみが見えます。

Bash
openssl x509 -inform pem -noout -text -in cert/node.full.crt.pem
Bash
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            78:68:67:b4:a6:d9:00:57:aa:7c:fc:e2:f6:93:f0:49:3b:18:97
        Signature Algorithm: ED25519
        Issuer: CN = Symbol CA
        Validity
            Not Before: Dec  7 08:15:57 2023 GMT
            Not After : Dec 16 08:15:57 2024 GMT
        Subject: CN = Symbol Node
        Subject Public Key Info:
            Public Key Algorithm: ED25519
                ED25519 Public-Key:
                pub:
                    94:0a:33:b6:43:fe:f6:5c:02:98:65:c1:93:31:61:
                    d4:c7:3d:aa:eb:63:da:e1:1d:fc:de:c5:2b:2d:54:
                    61:9a
    Signature Algorithm: ED25519
    Signature Value:
        de:49:72:54:35:46:3a:a5:8f:68:5c:1e:b3:dc:1b:4c:f2:64:
        85:06:6a:69:6c:3e:1f:50:e3:5d:2d:8c:9e:3d:c5:9c:50:33:
        18:5d:3b:b3:c8:c0:d2:b5:2e:d4:63:e4:29:c9:5b:fb:25:fa:
        5e:ed:e2:5f:16:8f:68:04:28:07
Plaintext

両方同時に確認したい場合

Bash
openssl crl2pkcs7 -nocrl -certfile cert/node.full.crt.pem | openssl pkcs7 -print_certs -text -noout
Bash

他のノードの証明書を確認

実際に稼働してるノードの証明書を参照する場合
7900 ポート開放してるノードのみ見れます。

Bash
openssl s_client -showcerts -connect 11.dusanjp.com:7900 </dev/null 2>/dev/null | openssl x509 -inform pem -noout -text
Bash

たまにポート変更してる変態もいるので、見れない場合はポートを確認してみてください。
以下は 7911 にしている場合。

Bash
openssl s_client -showcerts -connect symbol01.harvestasya.com:7911 </dev/null 2>/dev/null | openssl x509 -inform pem -noout -text
Bash

さいごに

みんなが使っている symbol-bootstrap では、全く使用しない部分でした。
マニュアルビルドする際に使うかなぁ…使わないかなぁ…とかいうレベルです。

そんな変態向けな情報でした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

four × 4 =

ABOUT US
MimosaHarvestasya

COBOL系Javerさ。Blockchain Symbolのノードを運営していることもあり、主にバック側の事を色々調べたり作ったりしています。
https://symbol01.harvestasya.com:3001/node/info

FF14ではMimosa SamiとしてGaiaDC/Ifritで遊んでます。 FF14緑化運動家(目立った活動はしていない)。FF14トレジャーハンター(魔門開かない)。

did:symbol:NC3XK5WRNQSDZRDBRD6NWL3RHYV5QNLU4WTXODA

Amazon欲しいものリスト