多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
**证书授权设置** **Certificate Authority(CA)设置** CA为一个区块链上的用户提供了许多的证书服务。更具体的说,这些服务与用户登记(user enrollment),事务调用(transactions invoked)有关,并且这些服务在用户之间,或者区块链的组件之间,都是 基于TLS安全连接的。 **登记证书授权(ECA)** **Enrollment Certificate Authority** ECA允许新用户注册入区块链网络中,并且允许注册用户请求一对登记证书(enrollment certificate pair)。一个是为了数据签名,另一个是为了数据加密。嵌入在证书中的公钥必须是ECDSA类型,这样用户就可以将数据加密的秘钥转换为椭圆曲线集成加密系统(ECIES:Elliptic Curve Integrated Encryption System)的方式来使用。 **事务证书授权(TCA)** **Transaction Certificate Authority** 一旦用户登记完,他就能向TCA请求事务证书。这些证书将被用来在区块链中部署链码,和调用链码事务。尽管一个事务证书可用于多个事务,但是为了隐私原因,还是建议每一个事务都用一个新的事务证书。 **TLS证书授权(TLSCA)** 除了*登记证书*,和*事务证书*之外,用户还需要TLS证书来保证他们的信道(通信频道)安全。TLS证书可以向TLSCA请求。 **配置** 所有的CA服务都是由一个单独进程提供,可以在CA配置文件`membersrvc.yaml`中配置参数,该文件就位于CA库的目录下。更具体的说,可以设置下面的参数: * `server.gomaxprocs`:限制CA可以使用多少系统线程。 * `server.rootpath`:CA存储它的状态的文件夹根路径。 * `server.cadir`:CA存储它的状态的文件夹名字。 * `server.port`:所有CA服务的监听端口(它们通过[GRPC](http://www.grpc.io/)实现端口复用)。 此外,日志级别可以通过调整以下设置来启用/禁用: * `logging.trace` (默认关闭,仅用于调试代码) * `logging.info` * `logging.warning` * `logging.error` * `logging.panic` 另外,这些属性可以通过环境变量来设置,如果设置,其优先级会高于yaml文件(`membersrvc.yaml`)中的条目。对应的环境变量名如下: ~~~ MEMBERSRVC_CA_SERVER_GOMAXPROCS MEMBERSRVC_CA_SERVER_ROOTPATH MEMBERSRVC_CA_SERVER_CADIR MEMBERSRVC_CA_SERVER_PORT ~~~ 此外,CA可以预先加载已注册用户,每一个用户的name, roles, password都已被指定: ~~~ eca: users: alice: 2 DRJ20pEql15a bob: 4 7avZQLwcUe9q ~~~ role值就是下面这样简单的一个位掩码: ~~~ CLIENT = 1; PEER = 2; VALIDATOR = 4; AUDITOR = 8; ~~~ 例如,一个peer如果还是一个验证者,那么它的role值就是6。 当CA第一次启动时,它会产生所有需要的状态(比如:内部数据库,CA证书,区块链秘钥,等等),并将这个状态写入配置给定的目录中。CA服务的证书(比如,ECA,TCA,TLSCA的证书)都自签名为当前默认值。如果那些证书需要被一些根CA签名,可以使用CA状态目录下的`*.priv`私钥和`*.pub`公钥来手动完成,然后替换掉自签名的`*.cert`证书。CA下一次启动的时候,它就会读取和使用那些根签名的证书了。 **编译运行CA** CA可以在membersrvc目录下,通过如下方式进行编译: ~~~ cd $GOPATH/src/github.com/hyperledger/fabric make membersrvc ~~~ 可以通过如下命令启动CA: ~~~ build/bin/membersrvc ~~~ **说明:CA必须在所有fabric peer节点之前启动,保证在任何peer节点尝试连接它之前,完成初始化。** CA会在`$GOPATH/src/github.com/hyperledger/fabric/membersrvc`路径下寻找`membersrvc.yaml`配置文件。