启动包含TLS的CA服务

启动包含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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值