11.5 服务端配置文件解析

服务端配置文件最常见的路径在/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:请求客户端提供证书;

·RequireAnyClientCert:要求客户端提供合法格式的证书;

·VerifyClientCertIfGiven:如果客户端提供证书,则进行验证;

·RequireAndVerifyClientCert:要求并且要验证客户端的证书。

各个配置项的具体功能可以参见下面示例的注释部分:


tls:
   # 是否启用TLS,默认为否。
   enabled: false
   # TLS证书和密钥文件
   certfile: ca-cert.pem
   keyfile: ca-key.pem
   clientauth: # 客户端验证配置,默认不进行身份验证
       type: noclientcert
       certfiles: # 进行客户端身份验证时,信任的证书文件列表

3.CA配置

包括实例的名称、签名私钥文件、身份验证证书和证书链文件等。这些私钥和证书文件会用来作为生成ECert、TCert的根证书。

各个配置项的具体功能可以参见下面示例的注释部分:


ca:
   # CA服务名称。可以支持多个服务。
   name:
   # 密钥文件(默认:ca-key.pem)
   keyfile: ca-key.pem
   # 证书文件(默认:ca-cert.pem)
   certfile: ca-cert.pem
   # 证书链文件(默认:chain-cert.pem)
   chainfile: ca-chain.pem

4.注册管理配置

当fabric-ca-server自身提供用户的注册管理时使用,这种情况下需要禁用LDAP功能,否则fabric-ca-server将会把注册管理数据转发到LDAP进行查询。

该部分主要包括两方面的配置:

·对enrollment过程的用户名和密码进行验证;

·获取某个认证实体的用户属性信息。

用户属性可以附加到用户分发的TCerts中,用于实现对链码(chaincode)的访问权限控制。

各个配置项的具体功能可以参见下面示例的注释部分:


registry:
   # 允许同一个用户名和密码进行enrollment的最大次数。特别是,-1表示无限制,0表示不
       支持登记。
   maxenrollments: -1

   # 注册的实体信息,可以进行enroll。只有当LDAP未启用时起作用。
   identities: # 可以指定多个
       - name: admin
         pass: adminpw
         type: client
         affiliation: ""
         maxenrollments: -1 # 同上
         attrs:
               hf.Registrar.Roles: "client,user,peer,validator,auditor"
               hf.Registrar.DelegateRoles: "client,user,validator,auditor"
               hf.Revoker: true
               hf.IntermediateCA: true  # 该id是否是一个中间层的CA

5.数据库配置

目前,数据库支持SQlite3、Postgres、MySQL,可以在本段中进行配置。默认为SQlite3类型的本地数据库。如果要配置集群,则需要选用Postgres或MySQL远端数据库方式,并在前端部署负载均衡器(如Nginx或HAProxy)。

各个配置项的具体功能可以参见下面示例的注释部分:


db:
   type: sqlite3
   datasource: fabric-ca-server.db # sqlite3 文件路径
   tls:
       enabled: false # 是否启用 TLS 来连接到数据库
       certfiles: db-server-cert.pem # PEM 格式的数据库服务器的 TLS 根证书,可以指定
                                       多个,用逗号隔开。
       client:
           certfile: db-client-cert.pem # PEM格式的客户端证书文件
           keyfile: db-client-key.pem # PEM格式的客户端证书私钥文件

例如,如果采用postgres类型,可以使用如下示例配置:


db:
   type: postgres
   datasource: host=postgres_server port=5432 user=admin password=pass dbname=
       fabric-ca-server sslmode=verify-full

其中,sslmode可以为:

·disable:不启用SSL;

·require:启用SSL,但不进行证书校验;

·verify-ca:启用SSL,同时校验SSL证书是否是可信CA签发;

·verify-full:启用SSL,同时校验SSL证书是否是可信CA签发,以及校验服务器主机名是否匹配证书中名称。

如果采用MySQL类型,则可以使用如下的示例配置:


db:
   type: mysql
   datasource: root:rootpw@tcp(sql_server:3306)/fabric-ca?parseTime=true&tls=custom

6.LDAP配置

配置使用远端的LDAP来进行注册管理,认证enrollment的用户名和密码,并获取用户属性信息。此时,服务端将 按照指定的userfilter从LDAP获取对应的用户,利用其唯一识别名(distinguished name)和给定的密码进行验证。当LDAP功能启用时,registry中的配置将被忽略。

各个配置项的具体功能可以参见下面示例的注释部分:


ldap:
   enabled: false # 是否启用LDAP,默认不启用
   url: ldap://<adminDN>:<adminPassword>@<host>:<port>/<base> # LDAP的服务地址
   tls:
       certfiles:
           - ldap-server-cert.pem # PEM格式的LDAP服务器的TLS根证书,可以为多个,用
                                            逗号隔开
       client:
           certfile: ldap-client-cert.pem # PEM格式的客户端证书文件
           keyfile: ldap-client-key.pem # PEM格式的客户端证书私钥文件
   userfilter: (uid=%s) # 用户过滤模式

注意  Lightweight Directory Access Protocol(LDAP,轻量级目录访问协议),是一种为查询、搜索业务而设计的分布式数据库协议,一般具有优秀的读性能,但写性能较差。

7.组织结构配置

每个组织可以包括若干个部门:


# 机构信息
affiliations:
   org1:
       - department1
       - department2
   org2:
       - department1

8.签发证书相关配置

签发证书相关的配置包括签名方法、证书超时时间等。fabric-ca-server可以作为用户证书的签发CA(默认情况下),还可以作为根CA来进一步支持其他中间CA。

各个配置项的具体功能可以参见下面示例的注释部分:


signing:
   default: # 默认情况下,用于签署Ecert
       usage: # 所签发证书的KeyUsage extension域
           - digital signature
       expiry: 8760h
   profiles: # 不同的签发配置
       ca: # 签署中间层CA证书时的配置模板
           usage:
               - cert sign # 所签发证书的KeyUsage extension域
           expiry: 43800h
           caconstraint:
               isca: true
               maxpathlen: 0 # 限制该中间层CA无法进一步签署中间层CA

9.证书申请请求配置

CA自身证书的申请请求配置。当CA作为根证书服务时,将基于请求生成一个自签名的证书;当CA作为中间证书服务时,将请求发送给上层的根证书进行签署。

具体各个配置项的功能可以参见下面示例的注释部分:


csr:
   cn: fabric-ca-server # 这里建议跟服务器名一致
   names:
       - C: US
         ST: "North Carolina"
         L:
         O: Hyperledger
         OU: Fabric
   hosts:
          - fabric-ca-server
          - localhost
   ca: # 配置后会加入到证书的扩展字段
       expiry: 131400h # 超时时间
       pathlength: 1 # 允许产生的中间证书的深度

10.BCCSP配置

主要是配置所选择的加密库。各个配置项的具体功能可以参见下面示例的注释部分:


bccsp:
   default: SW
   sw:
       hash: SHA2
       security: 256
       filekeystore:
           # 存放密钥文件的路径
           keystore: msp/keystore

11.多CA支持配置

通过cacount:自动创建除了默认CA外的多个CA实例,如ca1、ca2等。

通过cafiles:可以指定多个CA配置文件路径,每个配置文件会启动一个CA服务,注意不同配置文件之间需要避免出现冲突(如服务端口、TLS证书等)。

12.中间层CA配置

当CA作为中间层CA服务时的相关配置。包括父CA的地址和名称、登记信息、TLS配置等。注意,当intermediate.parentserver.url非空时,意味着本CA是中间层CA服务,否则为根CA服务。

各个配置项的具体功能可以参见下面示例的注释部分:


intermediate:
   parentserver: # 父CA相关信息
       url:
       caname:

   enrollment: # 在父CA侧的登记信息
       hosts: # 证书主机名列表
       profile: # 签发所用的profile
       label: # HSM操作中的标签信息

   tls: # TLS 相关配置
       certfiles: # 信任的根CA证书
       client: # 客户端验证启用时的相关文件
           certfile:
           keyfile:


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=911

'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值