深度学习
fabric-ca-server和fabric-ca-client都是基于Go语言实现的,很容易通过本地编译(需要本地Go语言环境支持)或Docker镜像的方式来快速安装使用。11.2.1 本地编译1.配置编译环境本地编译需要满足如下两个基本依赖:·Golang1.7+,并配置GOPATH环境变量,建议添加$GOPATH/bin目录到系统路径中;·libtool和libltdl-dev依赖库。Go语言环境准备步骤与第9章的Fabric安装小节中介绍的相似。用户可以访问golang.org网站下载稳定版本的二进制压缩包进行安装。注意,仍然不推荐通过系统包管理器方式进行安装,这种方式下默认安装的版本往往比较旧。安装后记得配置GOPATH环境变量:exportGOPATH=YOUR_LOCAL
服务端提供完整的证书管理功能,启动后生成CA服务,可以作为根CA来服务其他中间CA,也可以负责签发用户证书(默认情况下)。签发用户证书时,支持用户通过客户端命令或RESTfulAPI方式进行操作。1.配置读取需要注意的是,fabric-ca-server服务所需要的相关配置项会依次尝试从命令行参数、环境变量(命名需要带有FABRIC_CA_SERVER前缀)或主配置目录(未指定配置文件路径时)下本地配置文件来读取。因此,使用时可以根据需求采用不同方式来指定配置信息。例如指定启用TLS可以通过如下三种方式来进行配置,优先级由高到低:·命令行参数:--tls-enabled=true·环境变量:FABRIC_CA_SERVER_TLS_ENABLED=true·配置文件tls.enab
fabric-ca-server命令主要负责启动一个CA服务,包括init和start两个子命令。可以通过fabric-ca-server[command]--help命令来查看各个子命令的含义和选项。11.4.1 全局命令参数全局命令参数可以同时被init和start子命令支持,主要包括如下几个方面的参数。这些参数可以通过命令行参数方式传入,也支持通过环境变量或配置文件的方式传入。1.通用参数通用参数包括服务地址、个数、CA文件路径等,总结如表11-1所示。表11-1 通用参数2.证书签名请求参数证书签名请求参数主要应用在需要从上层CA申请颁发证书的场景,总结如表11-2所示。表11-2 证书签名请求参数3.数据库相关参数数据库相关参数目前支持SQlite3、Postgre、MySQL三种
服务端配置文件最常见的路径在/etc/hyperledger/fabric-ca-server/fabric-ca-server-config.yaml,包括通用配置、TLS配置、CA配置、注册管理配置、数据库配置、LDAP配置、组织结构配置、签名、证书申请等几个部分。1.通用配置包括服务监听的端口号,是否输出更多的DEBUG日志等:·port:7054:指定服务的监听端口;·debug:false:是否启用DEBUG模式,输出更多的调试信息。2.TLS配置主要包括是否在服务端启用TLS,以及如果启用TLS后进行身份验证的证书和签名的私钥。客户端进行TLS认证的模式可以有如下几种:·NoClientCert:不启用,为默认值;·RequestClientCert:请求客户端提供证书;
用户可以采用包括RESTfulAPI在内的多种方式跟FabricCA服务端进行交互。其中最为简便的方式是通过客户端工具fabric-ca-client。1.配置读取与fabric-ca-server服务类似,fabric-ca-client所需要的相关配置会依次尝试从命令行参数、环境变量(命名需要带有FABRICCACLIENT_前缀)或主配置目录(未指定配置文件路径时)下的本地配置文件来读取。主配置目录会依次尝试从环境变量FABRIC_CA_CLIENT_HOME、FABRIC_CA_HOME、CA_CFG_PATH中读取。一般推荐使用$HOME/.fabric-ca-client作为主目录环境变量的指向路径,用户也可以根据需求自行设定。当这些环境变量均未存在的情况下,fabric-c
fabric-ca-client命令可以跟服务端进行交互,包括enroll、getcacert、reenroll、register、revoke五个子命令,主要功能如下:·enroll:登录获取ECert;·getcacert:获取CA服务的证书链;·reenroll:再次登录;·register:注册用户实体;·revoke:吊销签发的实体证书。这些子命令在实现上都是通过服务端的RESTful接口来进行操作的,并且都支持一系列全局命令参数。11.7.1 全局命令参数包括通用参数、证书签名请求参数、Enroll、注册、吊销、TLS等多个方面的参数。1.通用参数通用参数都比较简单,所有命令都可以使用,如表11-6所示。表11-6 通用参数2.证书签名请求参数证书签名请求(certificate
客户端配置文件分为通用配置、TLS配置、证书签名申请配置、注册管理配置、登记配置、BCCSP配置等部分。1.通用配置主要包括制定所访问的服务端的地址、本地身份MSP路径、所连接CA服务的实例名,如下所示:#要连接的Fabric-ca-server的服务监听地址,默认为http://localhost:7054url:http://localhost:7054#客户端帮助peer或orderer进行enroll时候,指定希望存放证书文件的MSP路径mspdir:#默认为mspcaname:#所连接CA服务上的实例名称2.TLS配置当客户端和服务端之间采用TLS连接时需要进行配置,主要包括证书文件位置等。各个配置项的具体功能可以参见下面示例的注释部分:tls: &nb
FabricCA在整个证书管理环节中处于十分核心的位置。在生产环境中部署时,必须从多个方面进行考虑,以充分确保安全性、可靠性、规范性等指标。1.根证书的生成根证书目前可以通过从权威机构(包括GolbalSign、VeriSign)申请,或采用自行签名的方式生成。技术上来讲,两者都可以完成部署过程,并且都能保证同样的安全。但不同场景下两者各有利弊,总结如表11-12所示。表11-12 权威机构颁发与自行签名比较因此,如果应用场景不仅包括私有网络,而且需要可靠的证书机制,推荐采用权威机构颁发的根证书;如果仅面向私有网络场景,并且技术团队有较丰富的证书管理经验,则可以采用自行签名的方法进行部署。2.分层部署结构在实际部署中,PKI推荐采用分层的结构,即不由根CA来直接签发证书,而是通过由根CA签
架构之道,在于权衡。超级账本Fabric项目自诞生之日起就吸引了全球众多企业的密切关注。Fabric首次将权限管理机制引入区块链技术领域,其可扩展的架构设计、开放的接口风格、可拔插的组件化实现都为分布式账本平台的设计和实现提供了有意义的参考。本章将着重剖析超级账本Fabric项目的核心架构与创新设计,包括核心功能组件、底层通信协议、权限管理机制,以及十分灵活的用户链码和系统链码组件。最后,本章还介绍了Fabric网络中的核心共识组件——排序服务的设计和实现。通过本章,读者可以从底层实现的角度认识分布式账本平台的设计思路和核心架构,学习Fabric在功能、性能、安全、隐私等各方面的权衡技巧。
超级账本Fabric自诞生以来已经先后发布了两个大的版本,0.6实验版本(2016年9月)和1.0正式版本(2017年7月)。0.6版本实现了带有初步功能的分布式账本。基于这一版本,超级账本Fabric项目收集了大量在实际应用中的反馈建议,主要集中在性能、安全、可扩展性等方面。社区在此基础上,重新设计了整体架构,推出了焕然一新的1.0版本,重点在可扩展性和安全性上进行了改善,同时消除了网络原有的性能瓶颈。12.1.1 核心特性目前,超级账本Fabric架构的核心特性主要包括:·解耦了原子排序环节与其他复杂处理环节,消除了网络处理瓶颈,提高可扩展性;·解耦交易处理节点的逻辑角色为背书节点(Endorser)、确认节点(Committer),可以根据负载进行灵活部署;·加强了身份证书