Hyperledger Fabric開発実戦-05証明書サーバ

4887 ワード

本文は『ブロックチェーン開発実戦-Hyperledger Fabric肝心な技術とケーススタディ』という本を読むと同時に、実践の中で記録したいくつかの実践手順と経験を共有する.
Hyperledger Fabric開発実戦-06使用SDK
Hyperledger Fabricは、不正なユーザーがアクセスできないことを特徴とするアライアンスチェーンです.そのため、Fabricには改ざんできない特性を保証するための厳格なアカウントシステムがあります.
前の例では、OrdererノードとPeerノードを起動しても、Channelを作成しても、mspを設定する必要があります.システムを計画するときは、固定数のノードとユーザーを構成しますが、システムが変化した場合は、新しい組織を導入する必要があります.あるいは、組織に新しいアカウントとユーザーを追加する必要があります.これはどのように処理しますか.cryptogenモジュールはこの問題の解決に対して構成があり、yamlファイルを再構成することができ、そこで開始位置startを指定することができます.例えば、
PeerOrgs:
  - Name: Org1
      Domain: org1.cmbc.com
      Template:
          Count: 3
          Start: 2

以前はOrg 1のために2つのpeerノードを作成していましたが、現在のcountは3、startは3で、説明は2から3つ追加されました.
#    
peer0.org1.cmbc.com
peer1.org1.cmbc.com

#    3 peer
peer2.org1.cmbc.com
peer3.org1.cmbc.com
peer4.org1.cmbc.com

Fabric-ca
Fabric-caプロジェクトは、Fabricアカウントの問題を解決するために開発されたオープンソースプロジェクトで、Fabric-ca-serverとFabric-ca-clientの2つのモジュールから構成されています.
クライアントがsdkでpeerノードにアクセスする前に、まずCA Intermediate Serverの検証を行います.
コンパイルとインストール
の準備を
まずシステム依存性をインストールする必要があります.ca-serverのデータベースストレージとしてsqlite 3を使用します.
sudo apt-get install libtool libltdl-dev
sudo apt-get install sqlite3

ダウンロードとコンパイル
v 1を使用しているためです.1.0バージョン、一貫性を保つためにcaではこのバージョンが使用されています
cd $GOPATH/src/github.com/hyperledger
git clone http://gerrit.hyperledger.org//r/fabric-ca
cd $GOPATH/src/github.com/hyperledger/fabric-ca
git checkout v1.1.0

make fabric-ca-server
make fabric-ca-client



#       ,   usr   
sudo cp $GOPATH/src/github.com/hyperledger/fabric-ca/bin/* /usr/local/bin
chmod -R 775 /usr/local/bin/fabric-ca-server
chmod -R 775 /usr/local/bin/fabric-ca-client

けんさ
fabric-ca-server version
fabric-ca-client version

開始
初期化
fabric-ca-serverのinitサブコマンドは、生成に関連するプロファイルを初期化するために使用されます.
#       
mkdir ~/fabricwksp/04-ca/server
cd ~/fabricwksp/04-ca/server

#       ,-b   ca-server       
fabric-ca-server init -b admin:adminpw

構成の変更
主なプロファイルはディレクトリ系のfabric-ca-server-config.yamlファイルで、ca-serverのポート、デバッグモード、tls、ca、dbなどの情報が含まれています.必要なのはca-serverを既存の組織にバインドすることです.前の例に基づいて、Org 1にバインドし、ca部分を修正し、Org 1の証明書を設定する必要があります.
ca:
  name: ca-org1
  keyfile: /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/ca/9284b1b376bd6291d1c7e9b23902d6b6f660663241e2139e7093608f04198820_sk
  certfile: /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/ca/ca.org1.cmbc.com-cert.pem
  chainfile: ca-chain.pem

ca-serverの起動
fabric-ca-serverのstartサブコマンドを使用してサーバを起動するには、プロファイルが存在するディレクトリを作成する必要があります.
fabric-ca-server start -H /home/ssj234/fabricwksp/04-ca/server --boot admin:adminpw

クライアントの使用
Clientによって、アカウントを生成することができます.ca-serverはOrg 1の証明書をバインドしているので、動的に生成されたアカウントはOrg 1の下のユーザーです.
ディレクトリの設定
生産のアカウントは関連証明書を保存する必要があるので、フォルダに保存してください.
mkdir ~/fabricwksp/04-ca/client

enrollを使用してアカウントを登録enrollは管理者アカウントとパスワードで登録し、管理者のMSP証明書を取得します.
export FABRIC_CA_CLIENT_HOME=/home/ssj234/fabricwksp/04-ca/client
fabric-ca-client enroll -M /home/ssj234/fabricwksp/04-ca/client -u http://admin:adminpw@localhost:7054

コマンドを実行すると、生成された関連ファイルがclientフォルダに表示されます.
アカウントの登録
新しいアカウントpeer 4を登録し、パスワードはpeer 4 pw、部門はorg 1である.department1
fabric-ca-client register --id.name peer4 --id.type peer --id.affiliation org1.department1 --id.secret peer4pw -u http://localhost:7054

peer 4の証明書の取得
まず、peer 4のmspを保存するディレクトリを作成します.
mkdir -p ~/fabricwksp/04-ca/peer4/msp/admincerts

enroll取得証明書の実行
fabric-ca-client enroll -M /home/ssj234/fabricwksp/04-ca/peer4/msp -u http://peer4:peer4pw@localhost:7054

管理者の前からpeer 4ディレクトリへのコピー
cp /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/users/[email protected]/msp/signcerts/* ~/fabricwksp/04-ca/peer4/msp/admincerts

共通TLS署名証明書をpeer 4ディレクトリにコピー
mkdir -p ~/fabricwksp/04-ca/peer4/tls
cp /home/ssj234/fabricwksp/02-helloworld/fabricconfig/crypto-config/peerOrganizations/org1.cmbc.com/peers/peer0.org1.cmbc.com/tls/*  ~/fabricwksp/04-ca/peer4/tls

peer 4のディレクトリの下には、cryptogenで生成したアカウントファイルと一致する構造が表示されます.
├── msp
│   ├── admincerts
│   │   └── [email protected]
│   ├── cacerts
│   │   └── localhost-7054.pem
│   ├── intermediatecerts
│   │   └── localhost-7054.pem
│   ├── keystore
│   │   └── 75800c7f0f57af0eea8edfa8dc53fff45a3f98bb13281c645f18145b0c39d460_sk
│   └── signcerts
│       └── cert.pem
└── tls
    ├── ca.crt
    ├── server.crt
    └── server.key