启动包含TLS的CA服务
可以直接使用docker-compose -f ca.yaml up -d启动
version: '2'
networks:
byfn:
services:
ca-tls:
container_name: ca-tls
image: hyperledger/fabric-ca:1.4.3
command: sh -c 'fabric-ca-server start -d -b tls-ca-admin:tls-ca-adminpw --port 7052'
environment:
- FABRIC_CA_SERVER_HOME=/tmp/hyperledger/fabric-ca/crypto
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CSR_CN=ca-tls
- FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
- FABRIC_CA_SERVER_DEBUG=true
volumes:
- ./tls/ca:/tmp/hyperledger/fabric-ca
ports:
- 7052:7052
注册TLS CA管理员
使用TLS需要使用上一步生成的证书./fabric-ca-server/crypto/ca-cert.pem。所有的TLS认证都会用到这个文件。
export FABRIC_HOME=$PWD
export FABRIC_CA_CLIENT_HOME=$FABRIC_HOME
mkdir -p $FABRIC_HOME/tls-ca/crypto/
mkdir -p $FABRIC_HOME/tls-ca/admin/
cp $FABRIC_HOME/tls/ca/crypto/tls-cert.pem $FABRIC_HOME/tls-ca/crypto/
export FABRIC_CA_CLIENT_TLS_CERTFILES=$FABRIC_HOME/tls-ca/crypto/tls-cert.pem
export FABRIC_CA_CLIENT_HOME=$FABRIC_HOME/tls-ca/admin
fabric-ca-client enroll -d -u https://tls-ca-admin:tls-ca-adminpw@0.0.0.0:7052 -H $FABRIC_HOME/tls-ca/admin
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 peer2-org1 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name peer1-org2 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name peer2-org2 --id.secret peer2PW --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
Setup Orderer Org CA
每个组织都必须拥有自己的证书颁发机构(CA)来颁发注册证书。CA将为组织中的每个对等方和客户端颁发证书。
您的CA将创建属于您的组织的身份,并为每个身份颁发一个公共和私有密钥。这些密钥使您所有的节点和应用程序都能签名并验证其操作。网络的其他成员将理解您的CA签名的任何身份,以识别属于您的组织的组件。
Org0的管理员将启动Fabric CA docker容器,Org0将使用该容器来发布Org0中的身份的加密材料。
可以使用以下服务之类的docker服务来启动Fabric CA容器。
docker-compose -f org0.yaml up -d
version: '2'
networks:
byfn:
services:
rca-org0:
container_name: rca-org0
image: hyperledger/fabric-ca
command: /bin/bash -c 'fabric-ca-server start -d -b rca-org0-admin:rca-org0-adminpw --port 7053'
environment:
- FABRIC_CA_SERVER_HOME=/tmp/hyperledger/fabric-ca/crypto
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CSR_CN=rca-org0
- FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
- FABRIC_CA_SERVER_DEBUG=true
volumes:
- ./org0/ca:/tmp/hyperledger/fabric-ca
ports:
- 7053:7053
注册Orderer组织的CA管理员
您将发出以下命令来注册CA管理员,然后注册两个Org0的身份。
在下面的命令中,我们将假定CA的TLS证书的受信任根证书已复制到 /tmp/hyperledger/org0/ca/crypto/ca-cert.pem 存在fabric-ca-client二进制文件的主机上。如果客户端二进制文件位于其他主机上,则需要通过带外过程获取签名证书。
将注册以下身份:
- Orderer (orderer1-org0)
- Orderer admin (admin-org0)
export FABRIC_CA_CLIENT_TLS_CERTFILES=$FABRIC_HOME/org0/ca/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=$FABRIC_HOME/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
$ tree org0/ca/admin
fabric-ca-server/org0/ca/admin
├── fabric-ca-client-config.yaml
└── msp
├── IssuerPublicKey
├── IssuerRevocationPublicKey
├── cacerts
│ └── 0-0-0-0-7053.pem
├── keystore
│ └── e39c647145225d618a7454083079a69b8771dd35b7c2046cc9fa7a1fa6a6dba6_sk
├── signcerts
│ └── cert.pem
└── user
fabric-ca-client-config.yaml:CA客户端的配置
0-0-0-0-7053.pem:公共证书
e39c647145225d618a7454083079a69b8771dd35b7c2046cc9fa7a1fa6a6dba6_sk:私钥
cert.pem:CA签发的管理员证书
设置Org1的CA
docker-compose -f org1.yaml up -d
version: '2'
networks:
byfn:
services:
rca-org1:
container_name: rca-org1
image: hyperledger/fabric-ca
command: /bin/bash -c 'fabric-ca-server start -d -b rca-org1-admin:rca-org1-adminpw --port 7054'
environment:
- FABRIC_CA_SERVER_HOME=/tmp/hyperledger/fabric-ca/crypto
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CSR_CN=rca-org1
- FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
- FABRIC_CA_SERVER_DEBUG=true
volumes:
- ./org1/ca:/tmp/hyperledger/fabric-ca
ports:
- 7054:7054
注册Org1的CA管理员
注册以下身份
- Peer 1 (peer1-org1)
- Peer 2 (peer2-org1)
- Admin (admin1-org1)
- End user (user-org1)
export FABRIC_CA_CLIENT_TLS_CERTFILES=$FABRIC_HOME/org1/ca/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=$FABRIC_HOME/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 peer2-org1 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7054
fabric-ca-client register -d --id.name admin-org1 --id.secret org1AdminPW --id.type user -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
设置Org2的CA
docker-compose -f org2.yaml up -d
version: '2'
networks:
byfn:
services:
rca-org2:
container_name: rca-org2
image: hyperledger/fabric-ca
command: /bin/bash -c 'fabric-ca-server start -d -b rca-org2-admin:rca-org2-adminpw --port 7055'
environment:
- FABRIC_CA_SERVER_HOME=/tmp/hyperledger/fabric-ca/crypto
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CSR_CN=rca-org2
- FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
- FABRIC_CA_SERVER_DEBUG=true
volumes:
- ./org2/ca:/tmp/hyperledger/fabric-ca
ports:
- 7055:7055
注册Org2的CA管理员
export FABRIC_CA_CLIENT_TLS_CERTFILES=$FABRIC_HOME/org2/ca/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=$FABRIC_HOME/org2/ca/admin
fabric-ca-client enroll -d -u https://rca-org2-admin:rca-org2-adminpw@0.0.0.0:7055
fabric-ca-client register -d --id.name peer1-org2 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7055
fabric-ca-client register -d --id.name peer2-org2 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7055
fabric-ca-client register -d --id.name admin-org2 --id.secret org2AdminPW --id.type user -u https://0.0.0.0:7055
fabric-ca-client register -d --id.name user-org2 --id.secret org2UserPW --id.type user -u https://0.0.0.0:7055
设置Peers
一旦CA启动并运行,我们就可以开始注册对等方。
设置Org1的Peers
Org1的管理员将使用其CA注册对等方,然后启动对等Docker容器。在启动对等方之前,您需要使用CA注册对等方身份,以获取对等方将使用的MSP。这称为本地对等MSP。
注册 Peer1
mkdir -p $FABRIC_HOME/org1/peer1/assets/ca
cp $FABRIC_HOME/org1/ca/crypto/ca-cert.pem $FABRIC_HOME/org1/peer1/assets/ca/
mkdir -p $FABRIC_HOME/org1/peer1/assets/tls-ca/
cp $FABRIC_HOME/org1/ca/crypto/tls-cert.pem $FABRIC_HOME/org1/peer1/assets/tls-ca/
export FABRIC_CA_CLIENT_HOME=$FABRIC_HOME/org1/peer1
export FABRIC_CA_CLIENT_TLS_CERTFILES=$FABRIC_HOME/org1/peer1/assets/ca/ca-cert.pem
fabric-ca-client enroll -d -u https://peer1-org1:peer1PW@0.0.0.0:7054
下一步是获取peer的TLS加密材料。这需要再次注册,但是这次您将针对TLS CA上的配置文件进行注册。您还需要在注册请求中提供Peer1主机的地址,作为该csr.hosts标志的输入。在下面的命令中,我们将假定TLS CA的证书已被复制到Peer1的主机上的 $FABRIC_HOME/fabric-ca-server/org1/peer1/assets/tls-ca/tls-ca-cert.pem 。
export FABRIC_CA_CLIENT_MSPDIR=$FABRIC_HOME/org1/peer1/tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=$FABRIC_HOME/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
注册 Peer2
export FABRIC_CA_CLIENT_HOME=$FABRIC_HOME/fabric-ca-server/org1/peer2
export FABRIC_CA_CLIENT_TLS_CERTFILES=/tmp/hyperledger/org1/peer2/assets/ca/org1-ca-cert.pem
fabric-ca-client enroll -d -u https://peer2-org1:peer2PW@0.0.0.0:7054
未完
参考
https://hyperledger-fabric-ca.readthedocs.io/en/latest/operations_guide.html#setup-cas