FISCO BCOS上使用第三方CA证书底层节点部署实操

CA证书怎么生成?节点相互验证证书时会交叉验证吗?对于社区常遇到的此类问题,分享一些个人使用第三方CA证书部署底层节点的经验,希望可以给大家一些借鉴与参考。

为什么要对第三方CA证书进行改造?

首先,说明一下我进行第三方CA证书改造的背景和原因:

  • 社区内经常有人会问到第三方CA证书的改造问题,个人感觉这是大家都关注的要点。

  • 在我们的一些项目中,业务方指定要使用第三方CA证书,实际的生产需求也要求我们进行CA改造。

  • 在司法领域区块链存证场景中,需要由具有电子认证许可证书机构出具的认证证书才能作为电子认证。

鉴于以上三点,我觉得大家对如何进行第三方CA证书改造都很关注。

FISCO BCOS技术文档中提供了CFCA证书改造的案例,但在一些细节上还待完善,因此我想写一篇教程,结合生产环境改造、第三方CA配合、合规性、技术实现等内容具体说明,看看能否对其他社区用户有所帮助。

除了司法领域存证,还有哪些场景需要由第三方CA机构参与?

基本上用到CA证书的区块链场景都有可能用到第三方CA证书,是否采用第三方CA证书主要考虑:

  • 联盟链是否需要第三方CA机构背后的相关资质。

  • 联盟链中,参与方对节点准入管理、以及后续控管是否需要第三方CA机构作为公正机构来签发证书,防止自建CA体系中存在任意签发证书导致节点作恶等问题。

两级证书模式下,为什么需要配置白名单列表?如果不配置会有什么问题?

两级证书模式下使用第三方提供CA证书作为链证书,如果不配置白名单,只要是CA证书签发节点证书都可以连接到这条链上,配置白名单可以实现准入拦截。

实操步骤教学

接下来,我们来看看使用第三方CA证书部署底层节点的具体实操步骤。

此次改造要点为:

  • FISCO BCOS的底层CA缺省提供的是三级模式,链证书-->机构证书-->节点证书;

  • 现实环境中CA方虽然可以提供三级签发的证书,但在一些场景下有合规风险;

  • 目前我们采用的做法是剔除机构证书,从链证书-->节点证书的签发,其中链证书由CA方提供的CA.crt,配合白名单机制使用完成基础底层节点部署。

环境准备

  1. 两台测试服务器:118.25.208.8、132.232.115.126

  2. 操作系统为ubuntu:18.04

  3. openssl 工具使用ubuntu 18.04自带 openssl 1.1.1

  4. 选用普通版FISCO BCOS 2.5.0 版本,节点使用的节点证书算法为EC secp256k1曲线

  5. 结合【白名单机制】一起使用

    https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/certificate_list.html#id2

备注:测试过程中节点私钥和请求证书文件统一管理,但在生产环境中节点私钥应由各机构管理员进行生成,提交给CA方,私钥各自留存。

基础证书准备

生成基础节点私钥和节点证书请求文件。

采用openssl 工具,要求1.0.2版本以上,生成对应的节点私钥和节点证书请求文件、以及对应的node.nodeid(nodeid 是公钥的十六进制表示)。

说明:以下每个节点第四步生成node.nodeid 中的node.key ,都是对应节点的cert_IP_port.key 修改的,该操作是底层要求的。

  • 生产节点1 node_118.25.208.8_30300 相关文件

  • 生产节点2 node_118.25.208.8_30301 相关文件

  •  生产节点3 node_132.232.115.126_30300 相关文件 

  • 生产节点4 node_132.232.115.126_30301 相关文件

    说明:FISCO BCOS V2.5版本中,采用了私钥及EC secp 256k1曲线算法。

CA方进行节点证书签发

提交各个节点的node.csr 文件给CA方,CA方返回一张CA.crt 证书作为链证书,返回四张pem格式的节点证书。

说明:FISCO BCOS中,CA方返回证书的模式为:root -> node -issuer,节点证书中糅合issuer证书内容。

建链

  • step 1 :下载国内镜像,cd ~/ && git clone https://gitee.com/FISCO-BCOS/generator.git

  • step 2 :完成安装,cd ~/generator && bash ./scripts/install.sh完成安装,如果输出 usage: generator xxx,则表示安装成功

  • step 3 :获取节点二进制,拉取最新fisco-bcos二进制文件到meta中(国内cdn),如果输出 FISCO-BCOS Version : x.x.x-x,则表示成功

  • step 4 :机构分配

    选用 118.25.208.8 所属机构作为机构A,并由机构A负责创世区块生成

    选用 132.232.115.126 所属机构作为机构B

  • step 5 :将CA方提供CA.crt 证书作为链证书

    在机构A所属目录手动创建dir_chain_ca目录,并将CA.crt 放到dir_chain_ca目录中

  • step 6 :在机构A和机构B的meta目录下进行节点证书迁移

在meta目录中,手动创建对应的节点目录,其中机构A为:node_118.25.208.8_30300、node_118.25.208.8_30301,机构B为:node_132.232.115.126_30300、node_132.232.115.126_30301

每个目录需要存放对应的节点证书和节点私钥、节点Id,将CA方生成的节点证书、以及最初准备的节点id、节点私钥等文件统一分发至对应的节点目录,详细如图:

  • step 7:机构A收集所有节点证书

在机构A的meta目录下,收集对应的节点证书,用于后续生成创世区块。如图所示:

  • step 8:手动配置机构A修改conf文件夹下的group_genesis.ini,生成创世区块

  • step 9:修改机构A、机构B的conf目录下的node_deployment.ini;其中p2p 地址为外网地址、rpc、channel 地址为内网地址

  • step 10:在机构meta目录下手动创建peers.txt 文件

    机构A中创建 peers.txt、peersB.txt,机构B 创建 peers.txt、peersA.txt

    其中以机构A为例,peers.txt 内容如下:

  • step 11:机构A和机构B中生成节点,在机构A的generator中执行命令./generator --build_install_package ./meta/peersB.txt ./nodeA生成机构A的对应节点;在机构B的generator中执行命令./generator --build_install_package ./meta/peersA.txt ./nodeB生成机构B的对应节点

  • step 12:运行两个机构的节点:bash ./nodeA/start_all.sh和bash ./nodeB/start_all.sh;共识状态正常则如图所示:

  • step 13:控制台部署并进行合约部署测试

    针对机构A和机构B对应的控制台操作结果进行比对,两者数据一致,确保共识正常

  • step 14:在对应节点的config.ini 配置白名单

至此,我们就完成了第三方CA证书结合底层节点部署的改造。

从流程上看,主要是在链证书-->机构证书-->节点证书的生成流程改变了,以及需要在meta目录下进行手动创建peers.txt文件和节点目录等。

结缘FISCO BCOS开源社区

说起我与FISCO BCOS开源社区的结缘也源于CA证书,在一次政企项目对接中,业主方要求区块链底层需适配国密,并使用业主方指定的CA证书。

早期我们团队使用的是其他区块链底层,无法直接适配国密,且改造难度大、周期长、成本高;考虑到后续国内不少项目会涉及到适配国密和CA改造等,我们迫切需要一套完备的区块链底层支持上述需求。通过圈内朋友介绍,了解到FISCO BCOS,在进行深入技术调研、可行性分析后最终选择了FISCO BCOS。

FISCO BCOS开源社区中创设了开放交流的氛围,欢迎大家在社区中与我交流讨论。

1、FISCO BCOS的代码完全开源且免费下载地址:GitHub - FISCO-BCOS/FISCO-BCOS: FISCO BCOS是由微众牵头的金链盟主导研发、对外开源、安全可控的企业级金融区块链底层技术平台。 单链配置下,性能TPS可达万级。提供群组架构、并行计算、分布式存储、可插拔的共识机制、隐私保护算法、支持全链路国密算法等诸多特性。 经过多个机构、多个应用,长时间在生产环境中的实践检验,具备金融级的高性能、高可用性及高安全性。FISCO BCOS is a secure and reliable financial-grade open-source blockchain platform. The platform provides rich features including group architecture, cross-chain communication protocols, pluggable consensus mechanisms, privacy protection algorithms, OSCCA-approved (Office of State Commercial Cryptography Administration) cryptography algorithms, and distributed storage. Its performance, usability, and security have been testified by many institutional users and successful business applications in a live production environment.

2、如果你想随时随地与圈内最活跃、最顶尖的团队畅聊技术话题、参与丰富的社区活动,请添加小助手微信(FISCOBCOS010进入FISCO BCOS技术交流群

了解更多干货内容,请关注FISCO BCOS开源社区公众号,访问FISCO BCOS代码仓库可下载项目所有源代码:https://github.com/FISCO-BCOS/FISCO-BCOS,欢迎点击页面右上角star收藏,获取最新版本。

### FISCO BCOS 区块链中的密码学实现与应用 #### 密码学基础组件 FISCO BCOS采用了一系列先进的密码学算法和技术来保障系统的安全性。其中包括但不限于椭圆曲线加密(ECC)[^1]、哈希函数(SHA256, SM3)以及数字签名机制(ECDSA)[^2]。 #### 加密通信协议 为了确保节点间通讯的安全性和私密性,FISCO BCOS实现了基于TLS(Transport Layer Security)的传输层安全协议[TLS][^3],这不仅能够防止数据在网络上传输过程中被窃听或篡改,同时也支持客户端和服务端的身份验证过程。 #### 数字证书管理 在身份认证方面,FISCO BCOS引入了PKI(Public Key Infrastructure)公钥基础设施框架下的X.509标准格式数字证书来进行用户及节点的身份确认工作[X.509].每个参与方都需要持有由CA(Certificate Authority)签发的有效期内的合法凭证才能加入网络并发起交易请求. #### 合约层面的安全措施 对于智能合约而言,FISCO BCOS提供了一套完整的权限控制系统,允许开发者定义谁可以调用特定方法;此外还集成了形式化验证工具帮助检测潜在漏洞[Formal Verification Tools]. ```solidity // Solidity code example demonstrating access control within smart contracts on FISCO BCOS. pragma solidity ^0.4.2; contract AccessControl { address public owner; modifier onlyOwner() { require(msg.sender == owner); _; } } ``` #### 隐私保护特性 考虑到实际应用场景中可能存在的敏感信息处理需求,FISCO BCOS也加入了零知识证明(ZKP),同态加密(Homomorphic Encryption)等前沿技术手段[ZKP & HE],从而让用户能够在不暴露原始数据的前提下完成某些类型的计算操作.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值