FISCOBCOS~自建CA及实现认证

最近在调试区块链,开始调研了很多区块链平台,包括百度京东的,最终还是觉得微众银行的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.crtca.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]
default_ca=default_ca
[default_ca]
default_days = 365
default_md = sha256

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = CN
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default =GuangDong
localityName = Locality Name (eg, city)
localityName_default = ShenZhen
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = fisco-bcos
commonName = Organizational commonName (eg, fisco-bcos)
commonName_default = fisco-bcos
commonName_max = 64

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v4_req ]
basicConstraints = CA:TRUE
最近的文章

FISCOBCOS~联盟链部署

续前文,开始进行区块链部署。 部署前准备首先清楚联盟链,是需要多家机构组成联盟,因此在部署上稍微有区别。其中 FISCO BCOS 支持多群组概念,也就是意思说,多个组织组成多个联盟,而且联盟中可以允许共同的组织节点。 FISCO BCOS 部署需要 Linux 平台,建议使用 CentOS 7 平 …

技术 继续阅读
更早的文章

禁用PIP安装到用户目录

当前使用的 CentOS 7 系统上, 在某些脚本中自动安装一些软件竟然安装到root的用户的目录下了,其他用户根本用不了,因此针对该现象进行了分析。 问题基本分析正常情况下软件包是安装到系统目录下的,也就是安装目录下的 site-packages 目录,但是不知道为啥会安装到用户目录,不管什么情 …

技术 继续阅读