目次
Fabric-caプロジェクトは、Fabricアカウントの問題を解決するために特別に立ち上げられたオープンソースプロジェクトであり、Fabricアカウント生成の問題を完全に解決します。これは、Fabric-ca-serverとFabric-ca-clientの2つのモジュールで構成されています。Fabric-ca-serverは、Fabric-caプロジェクトで非常に重要な役割を果たします。
1.Fabric-caのコンパイルとインストール
ステップ1:システムコンポーネントパッケージをインストールする
sudo apt-get install libtool libltdl-dev
ステップ2:ソースコードをダウンロードしてコンパイルする
cd $GOPATH/src/github.com/hyperledger/
git clone http://gerrit.hyperledger.org/r/fabric-ca
cd fabric-ca/
#编译server和client
make fabric-ca-server
make fabric-ca-client
ステップ3:コンパイルされた実行可能ファイルをインストールします
cd $GOPATH/github.com/hyperledger/fabric-ca/bin/
cp $GOPATH/github.com/hyperledger/fabric-ca/bin/* /usr/local/bin/
ステップ4:インストールが成功したかどうかを確認します
fabric-ca-server version
fabric-ca-client version
2.Fabric-ca-serverの起動と構成
fabric-ca-serverが開始されると、デーモンプロセスとして存在し、fabric-ca-clientまたは通信プロトコルを実装する他のクライアントを介して要求を開始できます。faric-ca-serverで構成情報を設定するには、起動パラメーター、環境変数、および構成ファイルの3つの方法があります。
1.Fabric-ca-serverコマンドラインオプション
fabric-ca-serverモジュールには、次の3つのサブコマンドがあります。
- init:fabric-caサーバーを初期化します
- 開始:fabric-caサーバーを開始します
- バージョン:表示バージョン
2.Fabric-ca-serverオプション
3.Fabric-ca-serverの初期化
Fabric-ca-serverは、構成ファイルを介してパラメーター化できます。ファブリック-ca-serverのサブコマンドinitを実行して、関連する構成ファイルを初期化および生成します。initコマンドを実行する前に、関連するフォルダーを作成する必要があります。この記事では、次のフォルダーを作成します(実際には、フォルダーパスを自由に指定できます)。
mkdir -p ~/go/src/github.com/hyperledger/fabric-ca-server
Fabric-ca-serverサーバーの初期化:
cd ~/go/src/github.com/hyperledger/fabric-ca-server
fabric-ca-server init -b admin:adminpw
fabric-ca-server初期化コマンドが実行されると、対応する構成ファイルが現在のディレクトリに生成されます。これらのファイルの名前と機能は次のとおりです。
fabric-ca-server-config.yaml:配置文件
fabric-ca-server.db:数据库文件(数据库选择sqlite3时有效)
ca-cert.pem:证书文件
msp:私钥文件夹
4.Fabric-ca-serverの開始
構成ファイルを編集した後の起動コマンドは次のとおりです。
fabric-ca-server start -H '/home/yulin/go/src/github.com/hyperledger/fabric-ca' --boot admin:adminpw
3つ目は、Fabric-ca-clientの使用です。
fabric-ca-serverは、サードパーティアプリケーションが呼び出すための一連のRESTAPIインターフェイスを提供します。Fabric-ca-clientは、これらのRESTAPIインターフェースをカプセル化し、アカウント登録、アカウント承認、およびその他の操作を完了するために必要なのは単純なパラメーターのみです。
1. Fabric-ca-clientmoduleサブコマンド
- 登録:アカウントを登録する
- gencrl:証明書を取り消す
- gencsr:証明書の署名を作成する
- getcacert:CAを取得する
- 再登録:アカウントを再登録します
- 登録:新しいアカウントを登録します
- 取り消す:アカウントを取り消す
- version:バージョン情報を表示します
2.Fabric-ca-clientモジュールのパラメータオプション
fabric-ca-clientモジュールはfabric-ca-serverモジュールと同じです。すべてのサブコマンドは一連のグローバルオプションを共有します。サブコマンドが異なれば、必要なオプションも異なります。fabric-ca-clientモジュールのオプションとその機能は次のとおりです。
(1)基本的な管理コマンド
--caname: #CA服务器的名称
-H,--home: #客户端的目录,用来存放客户端相关的文件,默认为"~/.fabric-ca-client"
-M, --mspdir: #客户端的账号文件目录,默认为"msp"
-d, --debug: #将客户端的日志设为debug模式
-u, --url: #fabric-ca-server地址,默认为0.0.0.0:7054
(2)口座登録関連のご注文
--enrollment.attrs: #账号登记请求中的属性
--enrollment.label: #账号登记请求中HSM相关的标签
--enrollment.profile: #登记请求中的profile
(3)アカウント登録
--id.affiliation: #账号注册时组织部门信息
--id.attrs: #账号注册时属性列表
--id.maxenrollments: #当前注册后可以进行登记的次数,默认为-1
--id.name #账号注册时的用户名
--id.secret #账号注册时的密码
--id.type #账号注册的类型,目前支持('peer,app,user'),默认值为"user"。
(4)証明書の失効
-a,--revoke.aki: #注销证书时需要的公钥
-e,--revoke.name: #注销证书时的实体名称
-r,--revoke.reason: #注销原因
-s,--revoke.serial: #注销证书的序列号
(5)CA証明書の署名
--csr.cn: #CA证书请求时,请求报文中的通用名
--csr.hosts: #CA签名请求时,请求报文中的主机名
--csr.names: #CA签名请求时,请求报文中的附加名称
--csr.serialnumber: #CA签名请求时,请求报文中的序列号
-m,--myhost: #CA签名请求时,请求报文中请求主机名称,默认值是本地主机
(6)TLS通信
--tls.certfiles: #TLS通信模式下的证书文件,PEM文件格式。
--tls.client.certfile: #TLS通信模式下客户端的文件,PEM文件格式。
--tls.client.keyfile: #TLS通信模式下客户端的私钥文件。
(7)一般的に使用されるコマンド
アカウントの登録
fabric-ca-client register --id.name peer2 --id.type peer --id.affiliation org1.department1 --id.secret peer2wd -u http://hocalhost:7054
アカウント情報を読み込む
fabric-ca-client enroll -u http://admin:adminpw@localhost:7054 -M '/home/yulin/go/src/github.com/hyperledger/fabric-client'
CAサーバーの証明書を取得します
fabric-ca-client getcacert -u http://localhost:7054 -M ~/go/src/github.com/hyperledger/testuser/msp
第4に、fabric-ca-serverを既存のプロジェクトに統合します
Fabric-caは、Fabricのcryptogenモジュールの強力な補足であり、実際のプロジェクトで非常に重要な役割を果たします。ファブリックプロジェクトでは、cryptogenモジュールは通常、組織、ピアノード、注文ノード、およびその他のモジュールのアカウントファイルを生成するために使用されます。ただし、ユーザーアカウントファイルをプロジェクトで動的に生成する必要がある場合は、この時点でファブリック- caは、Fabric-caを作成するためにより良いヘルプを提供できます。指定された組織のユーザーアカウントを動的に生成するには、fabric-caと関連組織をバインドする必要があります。
1.fabric-ca-serverを既存の組織にバインドします
ここでは、fabric-ca-serverを前の[Hyperledger Fabricの概要]にバインドします。(1) org1で単純なFabricネットワーク1をすばやく実行します。
まず、fabric-ca-server構成ファイルfabric-ca-server-config.yamlを開き、構成ファイルで次のコンテンツを見つけます。
ca:
# Name of this CA
name:
# Key file (is only used to import a private key into BCCSP)
keyfile:
# Certificate file (default: ca-cert.pem)
certfile:
# Chain file
chainfile:
次に、[Hyperledger Fabricの概要]と入力します。(1)単純なFabricネットワーク1をすばやく実行してorg1関連の証明書フォルダーを保存し、ツリー-L2を実行してアカウント情報を表示します。
$ cd '/home/yulin/blockchain/fabric/Hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com'
$ tree -L 2
次のように、fabric-ca-server構成ファイルfabric-ca-server-config.yamlの関連する構成を変更します。
ca:
# Name of this CA
name: ca-org1
# Key file (is only used to import a private key into BCCSP)
keyfile: /home/yulin/blockchain/fabric/Hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/ca/priv_sk
# Certificate file (default: ca-cert.pem)
certfile: /home/yulin/blockchain/fabric/Hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem
# Chain file
chainfile: ca-chain.pem
- keyfile:caフォルダー内のファイル名が接尾辞_skのファイルに対応します。
- certfile:caフォルダー内のca.org1.example.com-cert.pemという名前のファイルに対応します。
上記の手順により、fabric-ca-serverは組織org1にバインドされます。
2.バインドされたfabric-ca-serverからクライアントを介してアカウントを生成します
手順1:Fabric-ca-client環境変数を設定
するfabric-ca-clientアカウント(msp)ファイルを保存するディレクトリを作成します。
mkdir ~/go/src/github.com/hyperledger/fabric-client
ディレクトリを作成したら、管理者アカウントとパスワードで登録して、管理者アカウント(msp)の整数ファイルを取得します。
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/hyperledger/fabric-client
fabric-ca-client enroll -u http://admin:adminpw@localhost:7054 -M ~/go/src/github.com/hyperledger/fabric-client
注:fabric-ca-serverを開始する必要があります。
ステップ2:アカウントを登録します
。管理者が登録した後、ユーザー名user_testとパスワードuser2wdでアカウントを登録します。コマンドは次のとおりです。
$ fabric-ca-client register --id.name user_test --id.type user --id.affiliation org1.department1 --id.secret user2wd -u http://localhost:7054 -H ~/go/src/github.com/hyperledger/fabric-client
2021/03/28 15:26:26 [INFO] Configuration file location: /home/yulin/go/src/github.com/hyperledger/fabric-client/fabric-ca-client-config.yaml
Password: user2wd
手順3:
アカウントを読み込む前の手順で登録したアカウントuser_testをローカルに読み込むには、まずローカルディレクトリを作成して、サーバーからダウンロードした新しいユーザーの証明書を保存する必要があります。ディレクトリは任意のディレクトリにすることができます。この記事の内容は次のとおりです。
mkdir ~/go/src/github.com/hyperledger/testuser
上記のディレクトリに入り、アカウントuser_testを登録し、-Mで指定したディレクトリにアカウントファイルを保存します。
$ fabric-ca-client enroll -u http://user_test:user2wd@localhost:7054 -M ~/go/src/github.com/hyperledger/fabric-client/testuser/msp
2021/03/28 15:31:33 [INFO] generating key: &{
A:ecdsa S:256}
2021/03/28 15:31:33 [INFO] encoded CSR
2021/03/28 15:31:33 [INFO] Stored client certificate at /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/msp/signcerts/cert.pem
2021/03/28 15:31:33 [INFO] Stored root CA certificate at /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/msp/cacerts/localhost-7054.pem
2021/03/28 15:31:33 [INFO] Stored Issuer public key at /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/msp/IssuerPublicKey
2021/03/28 15:31:33 [INFO] Stored Issuer revocation public key at /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/msp/IssuerRevocationPublicKey
手順4:管理者の署名と公開TLS証明書ファイルを
コピーするcopyコマンドは次のとおりです。
$ cp /home/yulin/blockchain/fabric/Hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/* /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/msp/admincerts
$ cp /home/yulin/blockchain/fabric/Hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/* /home/yulin/go/src/github.com/hyperledger/fabric-client/testuser/tls
ステップ5:アカウントを確認します。
ファイル構造を確認すると、cryptogenモジュールによって生成されたアカウントファイルは一貫していることがわかりますが、ファイル名は異なります。これは正常です。