備忘録として作成した為不完全です。
途中エラーが出てしまっているので、もし間違いやなにか気付いたことがございましたらコメントしていただけると幸いです。
このガイドでは、Fabric CA を使用して Fabric ネットワークを設定する方法について説明します。Hyperledger Fabric ブロックチェーン ネットワークに参加するすべての ID は承認される必要があります。この承認は、信頼できる機関によって検証される暗号化マテリアルの形式で提供されます。
最初に初期化(既にコンテナが経っている場合)
docker compose down
バイナリーデータをダウンロード
https://github.com/hyperledger/fabric-ca/releases
↓のファイルをダウンロードする(バージョンは適宜最新のものを使用)
hyperledger-fabric-ca-linux-amd64-1.5.13.tar.gz
ダウンロードしたバイナリーデータを解凍する
tar -xvzf hyperledger-fabric-ca-linux-amd64-1.5.13.tar.gz
解凍すると bin/ディレクトリ配下に
bin/fabric-ca-client
bin/fabric-ca-server
のようなディレクトリが生成される
バイナリのパスを通す
export PATH=$PATH:<解凍したバイナリがあるbinへの絶対パス>
#例: `export PATH=$PATH:/home/my/go/src/github.com/my/fabric/bin`
パスが通ったか確認
which fabric-ca-client
#指定したパスがリターンされたら成功
#出力例: /home/my/go/src/github.com/my/fabric/bin/fabric-ca-client
ローンチ
docker compose up ca-tls
#logに以下のレスポンスがあればローンチ成功
#[INFO] Listening on https://0.0.0.0:7052
TLS CAの管理者を登録する
- 署名証明書を取得する
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/tls-ca/crypto/tls-cert.pem
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/tls-ca/admin
fabric-ca-client enroll -d -u https://tls-ca-admin:tls-ca-adminpw@0.0.0.0:7052
fabric-ca-client register -d --id.name peer1-org1 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name orderer1-org0 --id.secret ordererPW --id.type orderer -u https://0.0.0.0:7052
org0をローンチ
新規ターミナルタブで実行(プロジェクトディレクトリに移動することを忘れずに)
docker-compose up rca-org0
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/ca/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org0/ca/admin
fabric-ca-client enroll -d -u https://rca-org0-admin:rca-org0-adminpw@0.0.0.0:7053
fabric-ca-client register -d --id.name orderer1-org0 --id.secret ordererpw --id.type orderer -u https://0.0.0.0:7053
fabric-ca-client register -d --id.name admin-org0 --id.secret org0adminpw --id.type admin --id.attrs "hf.Registrar.Roles=client,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=true:ecert,abac.init=true:ecert" -u https://0.0.0.0:7053
権限エラーが出る場合は所有者を変更する
sudo chown -R $(whoami):$(whoami) /tmp/hyperledger/
org1をローンチ
新規ターミナルタブで実行(プロジェクトディレクトリに移動することを忘れずに)
docker-compose up rca-org1
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/ca/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/ca/admin
fabric-ca-client enroll -d -u https://rca-org1-admin:rca-org1-adminpw@0.0.0.0:7054
fabric-ca-client register -d --id.name peer1-org1 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7054
fabric-ca-client register -d --id.name admin-org1 --id.secret org1AdminPW --id.type admin -u https://0.0.0.0:7054
fabric-ca-client register -d --id.name user-org1 --id.secret org1UserPW --id.type user -u https://0.0.0.0:7054
権限エラーが出る場合は所有者を変更する
sudo chown -R $(whoami):$(whoami) /tmp/hyperledger/
mkdir -p /tmp/hyperledger/org1/peer1/assets/ca/
※パーミッションエラーが出る場合はsudo を使用して実行
cp /tmp/hyperledger/org1/ca/crypto/ca-cert.pem /tmp/hyperledger/org1/peer1/assets/ca/
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/peer1
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer1/assets/ca/ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://peer1-org1:peer1PW@0.0.0.0:7054
mkdir -p /tmp/hyperledger/org1/peer1/assets/tls-ca/
cp /tmp/hyperledger/tls-ca/crypto/tls-cert.pem /tmp/hyperledger/org1/peer1/assets/tls-ca/
export FABRIC_CA_CLIENT_MSPDIR=tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer1/assets/tls-ca/tls-cert.pem
fabric-ca-client enroll -d -u https://peer1-org1:peer1PW@0.0.0.0:7052 --enrollment.profile tls --csr.hosts peer1-org1
cd /tmp/hyperledger/org1/peer1/tls-msp/keystore/
生成された認証書ファイルの名前をkey.pem二変更
mv <生成された認証書のファイル名> key.pem
#例 : mv adffe58434945e0f62dc0019e5e8f82f42bd5edbfbe4cfdf46a160c634e3b6e4_sk key.pem
cd -
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/admin
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer1/assets/ca/ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://admin-org1:org1AdminPW@0.0.0.0:7054
mkdir /tmp/hyperledger/org1/peer1/msp/admincerts
cp /tmp/hyperledger/org1/admin/msp/signcerts/cert.pem /tmp/hyperledger/org1/peer1/msp/admincerts/org1-admin-cert.pem
peer1-org1をローンチ
新規ターミナルタブで実行(プロジェクトディレクトリに移動することを忘れずに)
docker-compose up peer1-org1
mkdir -p /tmp/hyperledger/org0/orderer/assets/ca/
cp /tmp/hyperledger/org0/ca/crypto/ca-cert.pem /tmp/hyperledger/org0/orderer/assets/ca/org0-ca-cert.pem
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org0/orderer
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/orderer/assets/ca/org0-ca-cert.pem
fabric-ca-client enroll -d -u https://orderer1-org0:ordererpw@0.0.0.0:7053
mkdir -p /tmp/hyperledger/org0/orderer/assets/tls-ca/
cp /tmp/hyperledger/tls-ca/crypto/tls-cert.pem /tmp/hyperledger/org0/orderer/assets/tls-ca/tls-ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/orderer/assets/tls-ca/tls-ca-cert.pem
fabric-ca-client enroll -d -u https://orderer1-org0:ordererPW@0.0.0.0:7052 --enrollment.profile tls --csr.hosts orderer1-org0
cd /tmp/hyperledger/org0/orderer/tls-msp/keystore
mv adffe58434945e0f62dc0019e5e8f82f42bd5edbfbe4cfdf46a160c634e3b6e4_sk key.pem
cd -
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org1/admin
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer1/assets/ca/ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://admin-org1:org1AdminPW@0.0.0.0:7054
mkdir /tmp/hyperledger/org1/peer1/msp/admincerts
cp /tmp/hyperledger/org1/admin/msp/signcerts/cert.pem /tmp/hyperledger/org1/peer1/msp/admincerts/org1-admin-cert.pem
export FABRIC_CA_CLIENT_HOME=/tmp/hyperledger/org0/admin
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org0/orderer/assets/ca/org0-ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://admin-org0:org0adminpw@0.0.0.0:7053
mkdir /tmp/hyperledger/org0/orderer/msp/admincerts
cp /tmp/hyperledger/org0/admin/msp/signcerts/cert.pem /tmp/hyperledger/org0/orderer/msp/admincerts/orderer-admin-cert.pem
export FABRIC_CFG_PATH=/home/masakazumaruta/dev/tmp/
configtxgen -profile OrgsOrdererGenesis -outputBlock /tmp/hyperledger/org0/orderer/genesis.block -channelID syschannel
configtxgen -profile OrgsChannel -outputCreateChannelTx /tmp/hyperledger/org0/orderer/channel.tx -channelID mychannel
新規ターミナルタブで実行(プロジェクトディレクトリに移動することを忘れずに)
docker-compose up orderer1-org0
新規ターミナルタブで実行(プロジェクトディレクトリに移動することを忘れずに)
docker-compose up cli-org1
新規ターミナルタブで実行(プロジェクトディレクトリに移動することを忘れずに)
docker exec -it cli-org1 sh
cp /tmp/hyperledger/org0/orderer/channel.tx /tmp/hyperledger/org1/peer1/assets
org1のコンテナ内で実行(cli-org1を起動したターミナルに移動し、実行)
cd /tmp/hyperledger/org1/admin/msp
mkdir admincerts
cp ./signcerts/cert.pem ./admincerts/
export CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org1/admin/msp
peer channel create -c mychannel -f /tmp/hyperledger/org1/peer1/assets/channel.tx -o orderer1-org0:7050 --outputBlock /tmp/hyperledger/org1/peer1/assets/mychannel.block --tls --cafile /tmp/hyperledger/org1/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem