背景
Fabric CA项目原来是超级账本Fabric内的MemberService组件,负责对网络内各个实体的身份证书进行管理。鉴于其功能十分重要,2017年2月正式成立Fabric CA独立子项目,负责相关代码的维护。Fabric CA项目主要实现了如下几个功能:
- 负责Fabric网络内所有实体(Identity)的身份管理,包括身份的注册、注销等;
- 负责证书管理,包括ECerts(身份证书)、TCerts(交易证书)等的发放和注销;
- 服务端支持基于客户端命令行和RESTful API的交互方式。
在实现上,Fabric CA基于开源的CFSSL项目框架。代码同时托管在https://gerrit.hyperledger.org 和 https://github.com/hyperledger/fabric-ca (只读镜像)上。
CFSSl是Cloudf lare开源的提供PKI和TLS证书相关实现的工具集,项目地址为https://github.com/cloudflare/cfssl。
OpenSSL 和 CFSSL
OpenSSL是开源的SSL(Secure Sockets Layer)实现,SSL 是一个安全协议,为基于 TCP 的应用层提供安全链接,其目标是保证两个应用间通信的保密性和可靠性
CFSSL 是 CloudFlare 公司的一个 PKI 工具包,提供了命令行工具和一个 HTTP API 服务器用于签名、验证和捆绑 SSL 证书
架构
Fabric CA采用了典型的CS(Client-Server)架构,目前包含两个基本组件,分别实现服务端功能和客户端功能。
- 服务端(Server):fabric-ca-server实现核心的PKI服务功能,支持多种数据库后台(包括MySql、PostgreSQL等),并支持集成LDAP作为用户注册管理功能;
- 客户端(Client):fabric-ca-client封装了服务端的RESTful API,提供访问服务端的命令,供用户与服务端进行交互。
通常情况下,用户通过客户端从Fabric CA服务端获取合法的证书文件后,即可参与到Fabric网络中发起交易。处理交易过程中,无需实时依赖Fabric CA的在线。同时,服务端本身是个可扩展的Web服务,可以很容易地采用集群部署的方式进行负载均衡,同时提高可靠性。
证书管理
Fabric网络中,CA负责证书的管理。用户虽然可以通过cryptogen工具提前分配好各组织的身份证书,但对于加入到网络中的用户,以及未来支持的交易证书,都需要Fabric CA来进行统一管理。
Fabric CA占据网络中安全和隐私的最核心位置,因此需要加强安全方面的防护。CA不应该暴露在公共网络域中,并且只能由有限个具备权限的用户访问。
另外,根证书往往要进行离线保护处理,减少接触和泄露的可能性。通常使用中间层证书来完成实体证书的签发。同时,绝对不能直接用根证书作为组织管理员的身份证书。