精华内容
下载资源
问答
  • cmd/fabric-ca-server contains the main for the fabric-ca-server command. cmd/fabric-ca-client contains the main for the fabric-ca-client command. lib contains most of the code. a) server.go contains...
  • fabric-ca安装

    2017-03-27 15:40:00
    1.Go版本1.7+(具体可参考Linux安装Go语言) 2.GOPATH环境变量正确配置 export GOROOT=/usr/local/go export GOPATH=/opt/gopath export GOBIN=/usr/local/go/bin export PATH=$PATH:$GOROOT/bin:$GOPATH/bin...

    1.Go版本1.7+(具体可参考Linux安装Go语言

    2.GOPATH环境变量正确配置

    export GOROOT=/usr/local/go
    export GOPATH=/opt/gopath
    export GOBIN=/usr/local/go/bin
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

    3.libtool和libtdhl-dev包正确安装

    sudo apt install libtool libltdl-dev

    4.然后安装fabric-ca-server和fabric-ca-client

    go get -u github.com/hyperledger/fabric-ca/cmd/... #注意,该命令需使用root权限执行(sudo -i登录管理员权限),其中相关配置文件需在.profile文件中重新配置

    此时,执行命令,可以查看相关命令已经安装

    fengxm@fengxm:~$ which fabric-ca-server 
    /usr/local/go/bin/fabric-ca-server

     

    转载于:https://www.cnblogs.com/fengxm/p/6627060.html

    展开全文
  • 1 安装go 2配置 gopath 3 在gopath下创建bin文件夹 /opt/...5执行以下命令在/opt/gopath/bin 下安装 fabric-ca-server、fabric-ca-client 二进制可执行文件 go get -u github.com/hyperledger/fabric-ca/cmd/... ...

    1 安装go
    2配置 gopath
    3 在gopath下创建bin文件夹 /opt/gopath下创建bin文件夹
    4执行扩展包

    apt -y install libtool libltdl-dev
    

    5执行以下命令在/opt/gopath/bin 下安装 fabric-ca-server、fabric-ca-client 二进制可执行文件

    go get -u github.com/hyperledger/fabric-ca/cmd/...
    

    介绍Hyperledger fabric的PPT(52页)
    密码学笔记
    区块链知识体系简介
    部署 ipfs 网络 对接联盟链网络
    Hyperledger fabric网络(多共识 多版本 多数据库 ca ) 封装接口sdk
    Hyperledger Caliper 测试(多组织 多节点 多共识)
    区块链浏览器
    联系We-chat V : 18852897525

    展开全文
  • Fabric-CA-001:Fabric-CA基本介绍 先附上一份通用的fabric网络配置文件: version: '2' networks: fabric-ca: services: ca-tls: container_name: ca-tls image: hyperledger/fabric-ca:latest command: ...

    Fabric-CA-001:Fabric-CA基本介绍

    先附上一份通用的fabric网络配置文件:

    version: '2'
    
    networks:
      fabric-ca:
    
    services:
      ca-tls:
        container_name: ca-tls
        image: hyperledger/fabric-ca:latest
        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=tls-ca
            - FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
            - FABRIC_CA_SERVER_DEBUG=true
        volumes:
            - /tmp/hyperledger/tls-ca:/tmp/hyperledger/fabric-ca
        networks:
            - fabric-ca
        ports:
            - 7052:7052
    
      rca-org0:
        container_name: rca-org0
        image: hyperledger/fabric-ca:latest
        command: sh -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:
            - /tmp/hyperledger/org0/ca:/tmp/hyperledger/fabric-ca
        networks:
            - fabric-ca
        ports:
            - 7053:7053
    
      rca-org1:
        container_name: rca-org1
        image: hyperledger/fabric-ca:latest
        command: sh -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:
            - /tmp/hyperledger/org1/ca:/tmp/hyperledger/fabric-ca
        networks:
            - fabric-ca
        ports:
            - 7054:7054
    
      rca-org2:
        container_name: rca-org2
        image: hyperledger/fabric-ca:latest
        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:
            - /tmp/hyperledger/org2/ca:/tmp/hyperledger/fabric-ca
        networks:
            - fabric-ca
        ports:
            - 7055:7055
    
      peer1-org1:
        container_name: peer1-org1
        image: hyperledger/fabric-peer:latest
        environment:
            - CORE_PEER_ID=peer1-org1
            - CORE_PEER_ADDRESS=peer1-org1:7051
            - CORE_PEER_LOCALMSPID=org1MSP
            - CORE_PEER_LISTENADDRESS=0.0.0.0:7051
            - CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org1/peer1/msp
            - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
            - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=guide_fabric-ca
            - FABRIC_LOGGING_SPEC=info
            - CORE_PEER_TLS_ENABLED=true
            - CORE_PEER_TLS_CERT_FILE=/tmp/hyperledger/org1/peer1/tls-msp/signcerts/cert.pem
            - CORE_PEER_TLS_KEY_FILE=/tmp/hyperledger/org1/peer1/tls-msp/keystore/key.pem
            - CORE_PEER_TLS_ROOTCERT_FILE=/tmp/hyperledger/org1/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
            - CORE_PEER_GOSSIP_USELEADERELECTION=true
            - CORE_PEER_GOSSIP_ORGLEADER=false
            - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1-org1:7051
            - CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
        working_dir: /opt/gopath/src/github.com/hyperledger/fabric/org1/peer1
        volumes:
            - /var/run:/host/var/run
            - /tmp/hyperledger/org1/peer1:/tmp/hyperledger/org1/peer1
        ports:
            - 7051:7051
        networks:
            - fabric-ca
    
      peer2-org1:
        container_name: peer2-org1
        image: hyperledger/fabric-peer:latest
        environment:
            - CORE_PEER_ID=peer2-org1
            - CORE_PEER_ADDRESS=peer2-org1:8051
            - CORE_PEER_LOCALMSPID=org1MSP
            - CORE_PEER_LISTENADDRESS=0.0.0.0:8051
            - CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org1/peer2/msp
            - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
            - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=guide_fabric-ca
            - FABRIC_LOGGING_SPEC=info
            - CORE_PEER_TLS_ENABLED=true
            - CORE_PEER_TLS_CERT_FILE=/tmp/hyperledger/org1/peer2/tls-msp/signcerts/cert.pem
            - CORE_PEER_TLS_KEY_FILE=/tmp/hyperledger/org1/peer2/tls-msp/keystore/key.pem
            - CORE_PEER_TLS_ROOTCERT_FILE=/tmp/hyperledger/org1/peer2/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
            - CORE_PEER_GOSSIP_USELEADERELECTION=true
            - CORE_PEER_GOSSIP_ORGLEADER=false
            - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer2-org1:8051
            - CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
            - CORE_PEER_GOSSIP_BOOTSTRAP=peer1-org1:7051
        working_dir: /opt/gopath/src/github.com/hyperledger/fabric/org1/peer2
        volumes:
            - /var/run:/host/var/run
            - /tmp/hyperledger/org1/peer2:/tmp/hyperledger/org1/peer2
        ports:
            - 8051:8051      
        networks:
            - fabric-ca
    
      peer1-org2:
        container_name: peer1-org2
        image: hyperledger/fabric-peer:latest
        environment:
            - CORE_PEER_ID=peer1-org2
            - CORE_PEER_ADDRESS=peer1-org2:9051
            - CORE_PEER_LOCALMSPID=org2MSP
            - CORE_PEER_LISTENADDRESS=0.0.0.0:9051
            - CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org2/peer1/msp
            - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
            - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=guide_fabric-ca
            - FABRIC_LOGGING_SPEC=info
            - CORE_PEER_TLS_ENABLED=true
            - CORE_PEER_TLS_CERT_FILE=/tmp/hyperledger/org2/peer1/tls-msp/signcerts/cert.pem
            - CORE_PEER_TLS_KEY_FILE=/tmp/hyperledger/org2/peer1/tls-msp/keystore/key.pem
            - CORE_PEER_TLS_ROOTCERT_FILE=/tmp/hyperledger/org2/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
            - CORE_PEER_GOSSIP_USELEADERELECTION=true
            - CORE_PEER_GOSSIP_ORGLEADER=false
            - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1-org2:9051
            - CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
        working_dir: /opt/gopath/src/github.com/hyperledger/fabric/org2/peer1
        volumes:
            - /var/run:/host/var/run
            - /tmp/hyperledger/org2/peer1:/tmp/hyperledger/org2/peer1
        ports:
            - 9051:9051
        networks:
            - fabric-ca
    
      peer2-org2:
        container_name: peer2-org2
        image: hyperledger/fabric-peer:latest
        environment:
            - CORE_PEER_ID=peer2-org2
            - CORE_PEER_ADDRESS=peer2-org2:10051
            - CORE_PEER_LOCALMSPID=org2MSP
            - CORE_PEER_LISTENADDRESS=0.0.0.0:10051
            - CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org2/peer2/msp
            - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
            - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=guide_fabric-ca
            - FABRIC_LOGGING_SPEC=info
            - CORE_PEER_TLS_ENABLED=true
            - CORE_PEER_TLS_CERT_FILE=/tmp/hyperledger/org2/peer2/tls-msp/signcerts/cert.pem
            - CORE_PEER_TLS_KEY_FILE=/tmp/hyperledger/org2/peer2/tls-msp/keystore/key.pem
            - CORE_PEER_TLS_ROOTCERT_FILE=/tmp/hyperledger/org2/peer2/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
            - CORE_PEER_GOSSIP_USELEADERELECTION=true
            - CORE_PEER_GOSSIP_ORGLEADER=false
            - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer2-org2:10051
            - CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
            - CORE_PEER_GOSSIP_BOOTSTRAP=peer1-org2:9051
        working_dir: /opt/gopath/src/github.com/hyperledger/fabric/org2/peer2
        volumes:
            - /var/run:/host/var/run
            - /tmp/hyperledger/org2/peer2:/tmp/hyperledger/org2/peer2
        ports:
            - 10051:10051
        networks:
            - fabric-ca
    
      orderer1-org0:
        container_name: orderer1-org0
        image: hyperledger/fabric-orderer:latest
        environment:
            - ORDERER_HOME=/tmp/hyperledger/orderer
            - ORDERER_HOST=orderer1-org0
            - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
            - ORDERER_GENERAL_GENESISMETHOD=file
            - ORDERER_GENERAL_GENESISFILE=/tmp/hyperledger/org0/orderer/genesis.block
            - ORDERER_GENERAL_LOCALMSPID=org0MSP
            - ORDERER_GENERAL_LOCALMSPDIR=/tmp/hyperledger/org0/orderer/msp
            - ORDERER_GENERAL_TLS_ENABLED=true
            - ORDERER_GENERAL_TLS_CERTIFICATE=/tmp/hyperledger/org0/orderer/tls-msp/signcerts/cert.pem
            - ORDERER_GENERAL_TLS_PRIVATEKEY=/tmp/hyperledger/org0/orderer/tls-msp/keystore/key.pem
            - ORDERER_GENERAL_TLS_ROOTCAS=[/tmp/hyperledger/org0/orderer/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem]
            - ORDERER_GENERAL_LOGLEVEL=debug
            - ORDERER_DEBUG_BROADCASTTRACEDIR=data/logs
        volumes:
            - /tmp/hyperledger/org0/orderer:/tmp/hyperledger/org0/orderer/
        ports:
            - 7050:7050
        networks:
            - fabric-ca
    
    

    里面的目录都可以自己更改。

     

    1: rca-org1容器举例说明

    docker-compose up -d rca-org1

    目录信息:

    两个文件: ca-cert.pem 和 tls-cert.pem, 查看一下具体的文件信息:

    ca-cert.pem: 

    openssl x509 -in .\ca-cert.pem -noout -subject -issuer
    >>
    subject=C = US, ST = North Carolina, O = Hyperledger, OU = Fabric, CN = rca-org1
    issuer=C = US, ST = North Carolina, O = Hyperledger, OU = Fabric, CN = rca-org1

    tls-cert.pem:

    openssl x509 -in .\tls-cert.pem -noout -subject -issuer
    >>
    subject=C = US, ST = North Carolina, O = Hyperledger, OU = Fabric, CN = 5dc1c0eb3394
    issuer=C = US, ST = North Carolina, O = Hyperledger, OU = Fabric, CN = rca-org1

    ca-cert.pem 是org1的身份根证书,是自签名的证书(issuer = subject),所有被发布和被签名(由rca-org1的私钥)的证书都可以被根证书进行验证。从而验证已有证书的合法性。

    tls-cert.pem 由rca-org1发布的,是一个TLS服务器级的证书,仅用于其他服务和这个rca-org1的通讯。 具体的说,当客户机访问rca-org1时,rca-org1将向客户机提供这个服务器证书。客户端将使用颁发者(即根CA证书 【是ca-cert.pem】)来验证此服务器证书,并确认客户端正在与正确的服务器(rca-rg1)通信,并且客户端与rca-org1之间的通信是加密的。

     

    查看私钥(secret keys) ,对应上面的两个证书,存储在msp/keystore

    从私钥中导出公钥,并和证书中的公钥进行对比,确定密钥对。

    openssl ec -in .\msp\keystore\293779faeff36adfcf3b396f3356c1cb514124af328431f24a48e678d8e6f047_sk -pubout
    >>
    read EC key
    writing EC key
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnIDJa3ZohFnzMtqY+HOQofPj8+Ry
    IuVmcb72Bl4j8jagDO7PC4ToCF7Zlp/0TZd+VKH7f6NKBEPbuEz8BBsIpQ==
    -----END PUBLIC KEY-----
    
    
    openssl x509 -in .\ca-cert.pem -noout -pubkey
    >>
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnIDJa3ZohFnzMtqY+HOQofPj8+Ry
    IuVmcb72Bl4j8jagDO7PC4ToCF7Zlp/0TZd+VKH7f6NKBEPbuEz8BBsIpQ==
    -----END PUBLIC KEY-----

    tls-cert.pem

    最后再说明一下上面tls-cert.pem 文件,它是fabric-ca服务器签发的第一个证书,在fabric-ca-server.db中查看:

    数据库中对应的证书id: 5dc1c0eb3394, 和上面tls-cert.pem是一致的。 所以tls-cert.pem是ca签发的第一个证书,用于端对端通信。

     

    2 TLS的一些补充

    TLS协议的主要目的是保证通信双方的安全。这包括端点身份验证(确保与正确的目标通信)和消息安全性(确保消息被加密和身份验证)。

    这里有一些关于TLS的历史。TLS 1.0由SSL发展而来,于1999年发布。由于TLS 1.1在2006年的短暂寿命,TLS 1.2在2008年发布,它是当今互联网上最常用的版本。Fabric支持v2.2之前的TLS 1.2。TLS 1.3于2018年发布,并在最新发布的Fabric v2.2(2020年7月)中得到支持。

    TLS同时使用对称和非对称加密。

    • 对称加密:双方使用相同的密钥(通常称为共享密钥)对消息进行加密/解密和身份验证。
    • 非对称密码学通常称为公钥密码学,它不同于对称密码学,因为它涉及多个密钥。在这种情况下,每一方都有一个密钥对。这个密钥对在数学上是相关的,用一个密钥加密的消息只能由密钥对中的另一个密钥解密。在实际使用中,密钥对中的一个密钥被指定为私有密钥,由密钥所有者保存,而另一个密钥被指定为公开密钥,为公众所知。公钥密码学的名称就是从这个名称而来的。

     

    乍一看,非对称密码学似乎更先进,但实际上它的操作成本非常高。在TLS上下文中,消息加密使用对称密码学完成,而非对称密码学用于密钥交换/生成和证书(身份)验证。

     

    证书认证

    可以将证书视为公钥和身份的关联,由某些权威机构证明,称为证书颁发机构,CAs

    首先看一下tls-cert.pem文件,里面有一些重要信息

    • subject's identity
    • subject's public key
    • issuer's (CA's) identity
    • issuer's (CA's) digital signature of this certificate

    当我们得到这样一份证书,需要去验证是否有效。 一个最简单并且最基础的方式是使用CA's public key 去验证 signature,如果验证通过,则我们信任这份证书中的身份和public key.

    但是现在还需要 CA's public key ,在tls-ca证书中没有,那么就是在ca-cert.pem文件中了。 

    由CA根证书提供的 public key 去验证由CA签发的证书。

    Fabric中的TLS 和 身份系统之间存在混淆,因为两者都是通过证书颁发机构(CA)实现的,事实上,身份部分,或者称为MSP,是Fabric网络中一个重要得多的元素,作为一个被许可的区块链环境。 TLS 在技术上是一个选项,甚至可以在不影响Fabric操作的情况下关闭。

     

    展开全文
  • 目标 Fabric CA 客户端主目录路径 Fabric CA客户端的相关命令 实现 Fabric CA 对身份的...其中最方便的方式是通过客户端工具 fabric-ca-client。 Fabric CA 客户端的主目录路径设置如下: 如果设置了 --...

    目标

    1. Fabric-CA 客户端主目录路径
    2. Fabric-CA客户端的相关命令
    3. 实现 Fabric-CA 对身份的登记及注册

    任务实现

    Fabric-CA 可以采用客户端命令行或 RESTful API 在内的两种方式与 Fabric-CA 服务端进行交互。其中最方便的方式是通过客户端工具 fabric-ca-client

    Fabric-CA 客户端的主目录路径设置如下:

    • 如果设置了 --home 命令行选项,以此值为首选;
    • 如果没有设置 --home ,则查找 FABRIC_CA_CLIENT_HOME 值;
    • 否则,查找 FABRIC_CA_HOME 值;
    • 否则,查找 CA_CFG_PATH 值;
    • 如果都未设置,则使用 $HOME/.fabric-ca-client 作为客户端的主目录。

    6.4.1 Fabric-CA 客户端命令

    fabric-ca-client 命令可以与服务端进行交互, 包括五个子命令:

    • **enroll:**注册获取ECert
    • **register:**登记用户
    • getcainfo:获取CA服务的证书链
    • **reenroll:**重新注册
    • **revoke:**撤销签发的证书身份
    • **version:**Fabric-CA 客户端版本信息

    这些命令在执行时都是通过服务端的 RESTful 接口来进行操作的。

    6.4.1.1 注册用户

    打开一个新的终端,首先,设置 fabric-ca-client 所在路径,然后设置 Fabric-CA 客户端主目录。通过调用在 7054 端口运行的 Fabric-CA 服务器来注册 ID 为 admin 且密码为 pass 的标识。

    $ export PATH=$PATH:$GOPATH/bin
    $ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
    $ fabric-ca-client enroll -u http://admin:pass@localhost:7054
    

    如果名称与密码不匹配, 则运行注册命令可能会产生如下错误:

    Error: Response from server: Error Code: 20 - Authorization failure
    解决方式: 
    删除生成的目录,之后使用启动服务时的用户名与密码注册
    
    或
    返回至目录下重新启动服务, 然后在新终端中使用 admin:pass 注册
        $ cd ~
        $ fabric-ca-server start -b admin:pass
        打开新终端
        $ export PATH=$PATH:$GOPATH/bin
        $ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
        $ fabric-ca-client enroll -u http://admin:pass@localhost:7054
    

    参数解释:

    • **-u:**进行连接的 fabric-ca-server 服务地址。

    enroll 命令访问指定的 Fabric-CA 服务,采用 admin 用户进行注册。 在 Fabric-CA 客户端主目录下创建配置文件 fabric-ca-clien-config.yamlmsp 子目录,存储注册证书(ECert),相应的私钥和 CA 证书链 PEM 文件。我们可以在终端输出中看到指示 PEM 文件存储位置的相关信息。

    生成的文件结构如下所示:

    $ tree fabric-ca/clients/
    fabric-ca/clients/
    └── admin
        ├── fabric-ca-client-config.yaml
        └── msp
            ├── cacerts
            │   └── localhost-7054.pem
            ├── keystore
            │   └── 7441dddf832b4495cac12c05cc20b242f2ce545c5720010a83c11437157ac69d_sk
            ├── signcerts
            │   └── cert.pem
            └── user
    

    提示:可以使用 $ tree fabric-ca/clients/ 命令查看目录结构

    6.4.1.2 登记用户

    注册成功后的用户可以使用 register 命令来发起登记请求:

    Fabric-CA 服务器在注册期间进行了三次授权检查:

    1. 注册者(即调用者)必须具有 “hf.Registrar.Roles” 属性,其中包含逗号分隔的值列表,其中一个值等于要注册的身份类型; 如,如果注册商具有值为 “peer,app,user” 的 “hf.Registrar.Roles” 属性,则注册商可以注册 peer,app 和 user 类型的身份,但不能注册 orderer。
    2. 注册者的登记其范围内的用户。例如,具有 “a.b” 的从属关系的注册者可以登记具有 “a.b.c” 的从属关系的身份,但是可以不登记具有 “a.c” 的从属关系的身份。如果登记请求中未指定任何从属关系,则登记的身份将被授予注册者同样的归属范围。
    3. 如果满足以下所有条件,注册者可以指定登记用户属性:
      • 注册者可以登记具有前缀 “hf” 的 Fabric CA 保留属性。只有当注册商拥有该属性并且它是hf.Registrar.Attributes 属性的值的一部分时。此外,如果属性是类型列表,则登记的属性值必须等于注册者具有的值的一个子集。如果属性的类型为 boolean,则只有当注册者的属性值为 “true” 时,注册者才能登记该属性。
      • 注册自定义属性(即名称不以 ‘hf.’ 开头的任何属性)要求注册者具有 ‘hf.Registar.Attributes’ 属性,其中包含要注册的属性或模式的值。唯一支持的模式是末尾带有 “*” 的字符串。例如,“a.b.*” 是匹配以 “a.b” 开头的所有属性名称的模式。例如,如果注册者具有hf.Registrar.Attributes = orgAdmin,则注册者可以在身份中添加或删除唯一的 orgAdmin 属性。
      • 如果请求的属性名称为 “hf.Registrar.Attributes”,则执行附加检查以查看此属性的请求值是否等于 “hf.Registrar.Attributes” 的注册者值的子集。如,如果注册者的 hf.Registrar.Attributes 的值是 ‘a.b.*,x.y.z’ 并且所请求的属性值是 ‘a.b.c,x.y.z’,那么它是有效的,因为 ‘a.b.c’ 匹配 ‘a.b *’,‘x.y.z’ 匹配注册者的 ‘x.y.z’ 值。

    如下命令,使用管理员标识的凭据注登记 ID 为 “admin2” 的新用户,从属关系为 “org1.department1”,名为 “hf.Revoker” 的属性值为 “true”,以及属性名为 “admin”的值为 “true”。“:ecert” 后缀表示默认情况下,“admin” 属性及其值将插入用户的注册证书中,实现访问控制决策。

    $ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
    $ fabric-ca-client register --id.name admin2 --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,admin=true:ecert'
    

    执行后输出:

    Configuration file location: /home/kevin/.fabric-ca-client/fabric-ca-client-config.yaml
    Password: KwnOlOhpfVit
    

    命令执行成功后返回该新登记用户的密码

    如果想使用指定的密码, 在命令中添加选项 --id.secret password 即可

    登记时可以将多个属性指定为 -id.attrs 标志的一部分,每个属性必须以逗号分隔。对于包含逗号的属性值,必须将该属性封装在双引号中。如:

    $ fabric-ca-client register -d --id.name admin2 --id.affiliation org1.department1 --id.attrs '"hf.Registrar.Roles=peer,user",hf.Revoker=true'
    

    6.4.1.3 登记注册节点

    登记Peer或Orderer节点的操作与登记用户身份类似;可以通过 -M 指定本地 MSP 的根路径来在其下存放证书文件

    下面我们登记一个名为 peer1 的节点,登记时指定密码,而不是让服务器为生成。

    登记节点:
    $ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
    $ fabric-ca-client register --id.name peer1 --id.type peer --id.affiliation org1.department1 --id.secret peer1pw
    
    注册节点
    $ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1
    $ fabric-ca-client enroll -u http://peer1:peer1pw@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/msp
    

    参数说明:

    • -M: 指定生成证书存放目录 MSP 的路径, 默认为 “msp”

    命令执行成功后会在 $FABRIC_CA_CLIENT_HOME 目录下生成指定的 msp 目录, 在此目录下生成 msp 的私钥和证书。

    6.4.1.4 其它命令

    getcainfo

    通常,MSP 目录的 cacerts 目录必须包含其他证书颁发机构的证书颁发机构链,代表 Peer 的所有信任根。

    以下内容将在 localhost上启动第二个 Fabric-CA 服务器,侦听端口 7055,名称为 “CA2”。这代表完全独立的信任根,并由区块链上的其他成员管理

    $ export PATH=$PATH:$GOPATH/bin
    $ export FABRIC_CA_SERVER_HOME=$HOME/ca2
    $ fabric-ca-server start -b admin:ca2pw -p 7055 -n CA2
    

    打开一个新终端,使用如下命令将CA2的证书链安装到peer1的MSP目录中

    $ export PATH=$PATH:$GOPATH/bin
    $ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1
    $ fabric-ca-client getcainfo -u http://localhost:7055 -M $FABRIC_CA_CLIENT_HOME/msp
    
    reenroll命令

    如果注册证书即将过期或已被盗用。可以使用 reenroll 命令以重新生成新的签名证书材料

    $ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/peer1
    $ fabric-ca-client reenroll
    
    revoke命令

    身份或证书都可以被撤销,撤销身份会撤销其所拥有的所有证书,并且还将阻止其获取新证书。被撤销后,Fabtric CA 服务器从此身份收到的所有请求都将被拒绝。

    使用 revoke 命令的客户端身份必须拥有足够的权限(hf.Revoker为true, 并且被撤销者机构不能超出撤销者机构的范围)

    $ export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
    $ fabric-ca-client revoke -e peer1 -r "affiliationchange"
    

    参数说明:

    • **-e:**指定被撤销的身份
    • **-r:**指定被撤销的原因

    命令执行后输出内容如下:

    Configuration file location: /home/kevin/fabric-ca/clients/admin/fabric-ca-client-config.yaml
    Sucessfully revoked certificates: [{Serial:21ed80434dd59cb1f80f89b85ebf55b3f677a54e AKI:1a99482cc8fe46349f0bd7ad7095985177708207} {Serial:4cf57dc2a8a70609e6eaaf3094e1ab3ff6aabe91 AKI:1a99482cc8fe46349f0bd7ad7095985177708207}]
    

    另一种撤销身份的方式是可以指定其AKI(授权密钥标识符)和序列号来操作:

    fabric-ca-client revoke -a xxx -s yyy -r <reason>
    

    可以使用 openssl 命令获取 AKI 和证书的序列号,并将它们传递给 revoke 命令以撤销所述证书,如下所示:

    serial=$(openssl x509 -in userecert.pem -serial -noout | cut -d "=" -f 2)
    aki=$(openssl x509 -in userecert.pem -text | awk '/keyid/ {gsub(/ *keyid:|:/,"",$1);print tolower($0)}')
    fabric-ca-client revoke -s $serial -a $aki -r affiliationchange
    

    6.4.2 查看AKI和序列号

    AKI: 公钥标识号, 代表了对该证书进行签发机构的身份

    查看根证书的AKI与序列号信息:

    $ openssl x509 -in $FABRIC_CA_CLIENT_HOME/msp/signcerts/cert.pem -text -noout
    

    输出内容如下:

    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number:	# 序列号
                74:48:88:33:70:1a:01:a0:ad:32:29:6e:c5:ab:5a:fa:3b:91:25:a4
       ......
            X509v3 extensions:
               ......
                X509v3 Authority Key Identifier: 	# keyid后面的内容就是 AKI
                    keyid:45:B1:50:B6:CD:8A:8D:C5:9B:9E:5F:75:15:47:D6:C0:AD:75:FE:71
    
        ......
    

    6.4.2.1 单独获取AKI

    $ openssl x509 -in $FABRIC_CA_CLIENT_HOME/msp/signcerts/cert.pem -text -noout | awk '/keyid/ {gsub (/ *keyid:|:/,"",$1);print tolower($0)}'
    

    输出内容如下:

    1a99482cc8fe46349f0bd7ad7095985177708207
    

    6.4.2.2 单独获取序列号

    $ openssl x509 -in $FABRIC_CA_CLIENT_HOME/msp/signcerts/cert.pem -serial -noout | cut -d "=" -f 2
    

    输出内容如下:

    4CF57DC2A8A70609E6EAAF3094E1AB3FF6AABE91
    

    FAQ

    1. 在实际的生产环境中 Fabric-CA 需要考虑哪些问题?

      采用PKI推荐的分层结构,即根 CA、中间 CA 甚至根据实际需求场景更深层的 CA 来实现对身份的管理;

      为了实现高可用的负载均衡,正如官方推荐的使用 HA Proxy 软件或 Nginx等来部署集群环境。

    展开全文
  • fabric-ca-server 提供了一组RESTAPI接口给第三方接口,fabric-ca-client对这些接口进行封装,只需几个参数便可连接server进行账号注册、账号授权 enroll:登录账号 gencrl:撤销证书 gencsr:创建证书签名 ...
  • Fabric1.1中Fabric-ca

    2019-12-22 13:51:31
    摘要Fabric-ca安装配置,使用步骤,实现对服务器实体和用户证书的管理。 实际生产环境中,fabric-ca来实现对服务器实体和用户证书的管理 应该为每个Org建立一个CA,由CA来管理其中的用户。 ca目录是生成...
  • hyperledger-fabric-ca-linux-amd64-1.4.7+hyperledger-fabric-linux-amd64-1.4.7.rar的下载集合在一个文件夹里面啦
  • fabric-sdk-go调用Fabric-CA详细流程
  • fabric-ca-client

    2020-03-25 10:12:23
    fabric-client,快速下载 hyperledger-fabric-ca-linux-amd64-1.4.4
  • fabric-ca-server

    2020-03-25 10:13:13
    fabric-server快速下载(官网太慢了) hyperledger-fabric-ca-linux-amd64-1.4.4
  • ​ 本文章解决的是关于fabric-ca-server与fabric-ca-client之间使用tls进行通信的问题,包括fabric-ca-server与fabric-ca-client的安装以及关于tls通信的说明。 1.1fabric-ca-server与fabric-ca-client的安装 ​ ...
  • hyperledger/fabric-ca/hyperledger-fabric-ca/darwin-amd64-1.4.4/hyperledger-fabric-ca-darwin-amd64-1.4.4.tar.gz
  • ... ...而是-msp-tls(cryptogen模块生成)的结构(具体原因可以深入了解) ... cacerts--根CA服务器证书 keystore--节点或者账号的私钥 signcerts--符合X.509的节点或者用户证书文件 tlscacerts--T...
  • 1、下载 git clone https://github.com/hyperledger/fabric-ca.git 2、编译fabric-ca源码 ...$ make fabric-ca-server $ make fabric-ca-client 3、注意要在go的bin目录下执行 4、设置/etc/profile ...
  • hyperledger-fabric-ca-darwin 1.5的文件
  • hyperledger-fabric-ca-linux-amd64-1.4.9.tar
  • fabric-ca-linux文件,从github上下载太慢
  • fabric-ca1.03安装

    2017-10-25 17:46:00
    fabric-ca1.03安装 前面的文档已经成功的安装fabric1.0.1的e2e例子。之后代码换成1.0.3版本按步骤重新安装一下,就可以切换到1.0.3了。1.0.3的脚本和启动命令没有变化,还是用的1.0.1的。 1.准备...
  • fabric-ca

    2021-05-11 14:00:28
    Fabric CA开发人员指南 这是Fabric CA的开发人员指南,它是Hyperledger Fabric的证书颁发机构。 有关如何使用Fabric CA的信息,请参见 先决条件 进行1.15+安装或更高版本 GOPATH环境变量设置正确 docker版本17.03或...
  • hyperledger-fabric-ca-linux-amd64-1.4.9.tar.gz
  • 安装启用Fabric-CA服务

    2020-05-23 15:03:58
    Fabric-CAFabric的证书服务模块,由于我们之前的test-network网络并没有使用Fabric-CA,默认使用的是cryptogen来生成证书。 由于本次需要用到Fabric-CA,好在test-network也是支持的,只需要修改下network.sh...
  • fabric-ca命令

    2020-12-28 11:45:05
    fabric-ca fabric-ca-client enroll 获取证书的命令,该命令有效的前提是执行了register命令。 -u:表示CA服务地址 fabric-ca-client enroll -u https://orderer4:orderer4PW@0.0.0.0:7000
  • fabric-ca应用篇

    千次阅读 2018-04-27 14:04:26
    fabric-ca应用篇 fabric-ca应用篇 ...1.2 安装fabric-ca-server 、fabric-ca-client,安装方式: 1.2.1 使用git下载fabric-ca源码: 1.2.2 通过go get命令安装 1.3 设置程序执行环境变量 2. 启用fab...
  • hyperledger-fabric-ca-linux-amd64-2.0.1
  • hyperledger-fabric-ca-linux-amd64-1.4.0.tar.gz.rar是fabric-samples网络的配置环境,因为教程中官方网站没有了,在这里备份一下。包含两个文件,hyperledger-fabric-ca-linux-amd64-1.4.0.tar.gz和hyperledger-...
  • ===> Downloading version 1.4.0 platform specific fabric-ca-client binary ===> Downloading: ...
  • 该工具为fabric2.0 环境搭建过程中的二进制文件。...https://github.com/hyperledger/fabric-ca/releases/download/v1.4.6/hyperledger-fabric-ca-linux-amd64-1.4.6.tar.gz 不过官方下载速度较慢,故上传之。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,335
精华内容 3,334
关键字:

fabric-ca安装