Fabricサービス中間CAの開発プロセス
12324 ワード
fabricサービス中間CAの開発プロセス
fabric中間CAサービスの実現
プロセス
1.fabric-ca-server root CAとintermediate CAを使用
fabric-ca-server start -b admin:adminpw -p 7054
ルートCAがポート7054で起動するとする.
fabric-ca-server start -b admin:adminpw -p 7064 -u http://admin:adminpw@localhost:7054
中間CAがポート7064で起動するとする.パラメータ-uは、中間CAが起動していることを示し、-uの値は上位ルートCAのアドレスを指定する
rootca
├── ca-cert.pem
├── fabric-ca-server-config.yaml
├── fabric-ca-server.db
└── msp
└── keystore
└── 8bf83d802f3428e25e66c2131d4d09a428ed675b0bb5adf0b18757a03a653cbd_sk
immediateca
├── ca-cert.pem
├── ca-chain.pem
├── fabric-ca-server-config.yaml
├── fabric-ca-server.db
└── msp
├── cacerts
├── keystore
│ └── 9c669833b37097ec194fe16b68bb7e9a1b30ae36aa34ed7e81483032681f2043_sk
└── signcerts
中間CAはルートCAより一つ多いca-chain.pem証明書ファイル.ファイルを開くpemを見てみると、その内容は2つの証明書(root CAとintermediate CA)の内容、すなわち証明書チェーンを含んでいます.
<content of intermediateca/ca-cert.pem>
<content of rootca/ca-cert.pem>
4 . 彼らの検証関係をもう一度見てみましょう
$ openssl verify -verbose -CAfile rootca/ca-cert.pem intermediateca/ca-cert.pem
immediateca/ca-cert.pem: OK
$ openssl verify -verbose -CAfile rootca/ca-cert.pem intermediateca/ca-chain.pem
immediateca/ca-chain.pem: OK
$ openssl verify -verbose -CAfile intermediateca/ca-chain.pem intermediateca/ca-cert.pem
intermediate/ca-cert.pem: OK
$ openssl verify -verbose -CAfile intermediateca/ca-cert.pem intermediateca/ca-chain.pem
immediateca/ca-chain.pem: C = US, ST = North Carolina, O = Hyperledger, OU = client, CN = admin
error 20 at 0 depth lookup:unable to get local issuer certificate
rootノードのルート証明書を見ることができ、intermediateノードのルート証明書を検証することができます.すなわちintermediateノードのルート証明書がrootノードによって発行されたことを検証し、証明書チェーン関係を形成する.
5 . Intermediate CAへの登録(register)と登録(enroll)ユーザー
$ fabric-ca-client enroll --home admin --url http://admin:adminpw@localhost:7064
$ fabric-ca-client register --home admin --id.name tester --id.secret testpasswd --id.type user
$ fabric-ca-client enroll --home tester --url http://tester:testpasswd@localhost:7064
testerという名前のユーザーが登録されています.要求ポートIPが間違っていないことに注意
treeディレクトリの表示
$ tree tester/msp
tester/msp
├── cacerts
│ └── localhost-7064.pem
├── intermediatecerts
│ └── localhost-7064.pem
├── keystore
│ └── b9d4aeed6a4c261e7fd183bafbe11b369414d4873875c885bac374f76fe25b70_sk
└── signcerts
└── cert.pem
以下に、これらのファイルとroot CA/intermediate CAのプロファイルとの等しい関係を列挙する.以下に、これらのファイルとroot CA/intermediate CAのプロファイルとの等しい関係を列挙する.以下に、これらのファイルとroot CA/intermediate CAのプロファイルとの等しい関係を列挙する.
msp/cacerts/localhost-7064.pem == rootca/ca-cert.pem
msp/intermediatecerts/localhost-7064.pem == intermediateca/ca-cert.pem
2点:
ユーザーの証明書を見てみましょう:msp/signentrts/cert.pem
openssl verify -verbose -CAfile ../../intermediateca/ca-chain.pem msp/signcerts/cert.pem
すなわち、ユーザのmsp/signentrts/cert.pem証明書は、intermediateCAのca-chainである必要がある.pem検証は、後者がrootCAとintermediateCAの2つの証明書内容を含むため、証明書チェーン検証を形成する.個々のCA証明書(root CAでもintermediate CAでも)は、単独で検証できません.
これで簡単な中間CAの流れができた.
リンク:https://www.jianshu.com/p/2ab1ba296339
2.ルートCAコンテナの生成
まずはミラーとか
#
# Copyright IBM Corp All Rights Reserved
#
# SPDX-License-Identifier: Apache-2.0
#
version: '2'
networks:
basic:
services:
#------------------------------- Root CA for Orgs -------------------------------
ca-order.sunlidong.com:
container_name: ca-order.sunlidong.com
image: hyperledger/fabric-ca:latest
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_CLIENT_HOME=/etc/hyperledger/fabric-ca-client
- FABRIC_CA_SERVER_CA_NAME=ca-order.sunlidong.com
- FABRIC_CA_SERVER_TLS_ENABLED=false
ports:
- "7354:7054"
command: sh -c "fabric-ca-server start -b admin:adminpw --cfg.affiliations.allowremove --cfg.identities.allowremove"
volumes:
- ./crypto/ca1:/etc/hyperledger/fabric-ca-server
networks:
- basic
docker-compose -f docker.yaml up -d
正常に起動したかどうかを確認
3.init中間CAのプロファイル
具体的にはなぜ容器の中でpingが違うのかよく分かりません.しばらくはそうするしかない
abric-ca-server init -b admin:adminpw -u http://admin:[email protected]:7354 -H `pwd`/crypto/ca2/
複数のCAファイルがあれば複数生成可能
4.中間CA容器の生成
#
# Copyright IBM Corp All Rights Reserved
#
# SPDX-License-Identifier: Apache-2.0
#
version: '2'
networks:
basic:
services:
#------------------------------- intermediate CA for Orgs -------------------------------
ca-org1.test.com:
container_name: ca-org1.test.com
image: hyperledger/fabric-ca:latest
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_CLIENT_HOME=/etc/hyperledger/fabric-ca-client
- FABRIC_CA_SERVER_CA_NAME=ca-org1.test.com
- FABRIC_CA_SERVER_TLS_ENABLED=false
ports:
- "8354:7054"
command: sh -c "fabric-ca-server start -b admin:adminpw -u http://admin:[email protected]:7354"
volumes:
- ./crypto/ca2:/etc/hyperledger/fabric-ca-server
networks:
- basic
#------------------------------- intermediate CA for Orgs -------------------------------
ca-org2.test.com:
container_name: ca-org2.test.com
image: hyperledger/fabric-ca:latest
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_CLIENT_HOME=/etc/hyperledger/fabric-ca-client
- FABRIC_CA_SERVER_CA_NAME=ca-org2.test.com
- FABRIC_CA_SERVER_TLS_ENABLED=false
ports:
- "9354:7054"
command: sh -c "fabric-ca-server start -b admin:adminpw -u http://admin:[email protected]:7354"
volumes:
- ./crypto/ca3:/etc/hyperledger/fabric-ca-server
networks:
- basic
5.登録の開始
caプロファイルの変更
id:
name: [email protected]
type: client
affiliation: org1.department1
maxenrollments: 0
attributes:
- name: hf.Registrar.Roles
value: client,orderer,peer,user
- name: hf.Registrar.DelegateRoles
value: client,orderer,peer,user
- name: hf.Registrar.Attributes
value: "*"
- name: hf.GenCRL
value: true
- name: hf.Revoker
value: true
- name: hf.AffiliationMgr
value: true
- name: hf.IntermediateCA
value: true
- name: role
value: admin
ecert: true
登録
fabric-ca-client register -H `pwd`/cacerts_ca2/ --id.secret=password
証明書の取得
fabric-ca-client enroll -u http://[email protected]:[email protected]:8354 -H `pwd`/ca_admin/ca2_admin
これにより,中間ca登録などが実行可能となり,他の操作は前を参照する.コンテナ起動モード