最近在调试区块链,开始调研了很多区块链平台,包括百度京东的,最终还是觉得微众银行的FISCO BCOS最好用。至于各个平台的差异,大家可自行百度对比。顺便说一句,FISCO BCOS(以下称FB)的社区还不错,官方支持nice!
关于FISCO BCOS
自建区块链,基本比较合适的方式是联盟链。因为使用公链存着信息泄露,私链又没有信用背书,因此诞生了在有限范围内使用的区块链架构,即联盟链。
联盟链是设置了准入规则的区块链,而FB在此处是使用了证书认证的模式进行的验证,因此在搭建区块链之前,首先要明确角色,搭建原始的CA认证体系,对准入的伙伴进行证书认证。
官方部署有一键部署方式,可作为快速体验的方式,但不适合真实环境部署。
本地自建CA
联盟链是多个机构组成的区块链,既然联盟肯定要有一个具体的角色充当CA管理者,至于如何管理,由联盟的组织进行商讨决定。CA认证等涉及到密码学相关知识,必须要使用相应的工具,一般使用标准的OpenSSL即可,在Linux等平台上该工具为标配,建议所有操作均在Linux平台上进行。
为CA创建私钥
openssl genrsa -out ca.key 2048
使用CA的私钥进行自认证签名
openssl req -new -x509 -days 36500 -subj "/CN=CA/O=fisco-bcos/OU=chain" -key ca.key -out ca.crt
操作完成之后,会生成CA的证书文件,上面的命令中有些参数根据实际进行协商,比如
- O 为联盟链组织名称
- OU 为联盟链单元,比如设置为角色值
- CN 为组织名称,如各个机构的名称
签名下发联盟角色证书
当获取到各个组织角色提交过来的证书请求文件之后,CA便可以对该请求文件进行正式的签名生成组织的证书。
其方法如下,如联盟角色提交的证书请求文件为 agency.csr
openssl x509 -req -days 3650 -sha256 -CA ca.crt -CAkey ca.key -CAcreateserial -in agency.csr -out agency.crt -extensions v4_req -extfile cert.cnf |
其中 -days
参数为认证期限,超过该期限需要续签。
然后将生成的 agency.crt
和 ca.crt
下发给该组织即可。
联盟角色生成证书
各个联盟组织成员需要接入联盟链区块链,那么首先就必须在联盟获得认证证书,使用证书方可部署接入区块链。上面已经演示了如何进行CA认证,但是各个组织的如何操作呢
首先组织需要为自己创建私钥
openssl genrsa -out ca.key 2048
然后使用私钥生成证书请求文件
openssl req -new -sha256 -subj "/CN=baoxun/O=fisco-bcos/OU=agency" -key agency.key -config cert.cnf -out agency.csr
同样的,建议证书内容协商统一,另外 cert.cnf 文件可从CA处获取,以保持统一。
执行完上面的命令后,会生成证书请求文件 agency.csr,将该文件发给CA,CA签名认证后会下发 agency.crt 和 ca.crt 证书。
附录
上面使用的 cert.cnf
模板如下
[ca] |