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

2023-10-30

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收藏,获取最新版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FISCO BCOS上使用第三方CA证书底层节点部署实操 的相关文章

  • iOS开发多线程-线程间的通信

    一 简单说明 线程间通信 在1个进程中 线程往往不是孤立存在的 多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后 转到另1个线程继续执行任务 线程间通信常用方法 void perfo

随机推荐

  • 05-----检测某个端口是否开放和查看服务器防火墙状态

    1 检测某个端口是否开放 nc vv 192 168 1 117 8890 结果 2 查看服务器防火墙状态 service firewalld status 或者使用下面的命令查看防火墙状态 主要看系统 systemctl status f
  • CCNP学习考试心得(转)

    CCNP学习考试心得 转 more 当计算机屏幕上显示 Congralation时 我不禁长出一口气 心中想 终于考完了 我所说的终于考完是指 我终于完成了ccnp的考试 四个月的学习 对于某些人来说可能太长了 但是要真正掌握ccnp的内容
  • C++学习系列之打印金字塔和倒金字塔

    实例要求 用符号 打印一个金字塔 用符号 打印一个倒金字塔 金字塔代码 include
  • VSCode中开发JavaWeb项目(Maven+Tomcat+热部署)

    1 安装插件 首先需要安装所用到的插件 分别用来支持Java 热部署和Tomcat服务器的插件 在插件市场中搜索Java 第一个就是Extension Pack for Java 内置了6个依赖插件 直接一键安装即可 然后是热部署插件 市场
  • python recvfrom设置超时_如何在python的socket recv方法上设置超时?

    我需要在python的socket recv方法上设置超时 怎么做 仅供参考 如果您选择使用超时 您需要知道如何处理超时 这个SO问题讨论了超时发生时的处理 stackoverflow com questions 16745409 典型的方
  • elementui实现横向时间轴_横向时间轴(进度条)

    1 2 3 4 5 6 7 8 9 10 timeline box 11 width 100 12 height 8rem 13 position relative 14 15 16 timeline container 17 height
  • 2023 年及未来最佳的软件构建工具

    当今世界 加快任务完成速度和尽可能减少人力投入是一切事物都需要关注的问题 软件开发也不例外 无论你在哪个领域 游戏 区块链 还是应用创建 软件开发的竞争都异常激烈 只要能够帮助到你 采用任何手段都无关紧要 而这也正是构建工具的作用 这些工具
  • Linux——I/O复用(2)—— poll和epoll

    poll原型 poll系统调用和select类似 也是在指定时间内轮询一定数量的文件描述符 以 测试其是否有就绪者 int poll struct pollfd fds int nfds int timeout fds struct pol
  • JAVA笔记--异常处理(第一篇)

    目录 一 异常概念 1 什么是异常 2 try与catch关键字 二 try catch finally 1 catch 2 异常处理过程分析 3 finally 三 throw throws与异常规则 1 throw throws 2 异
  • Unity3d 通过json文件使用C#脚本代码生成多个相机

    首先设计一个存储相机类型的json类如下 using UnityEngine using System using System Collections Serializable public class Cameras public in
  • matlab基本粒子群算法实现(四)

    最后在炼数成金那边找到了很好的一篇教程 在这里把它整理一下 做个粒子群算法的收尾 main m I 清空环境 clc clear II 绘制目标函数曲线 figure x y meshgrid 5 0 1 5 5 0 1 5 z x 2 y
  • 阿里巴巴一道笔试题

    其实这是谷歌的一道面试题 给定能随机生成整数1到5的函数 写出能随机生成整数1到7的函数 惭愧 阿里的笔试题做错了 说实话 以前没见过 见过了就把搞懂 阿里题目 给定rand 7 表示能生成1 7的随机数 使用四则运算和循环等控制语句 可以
  • Python基础之循环语句

    Python基础之循环语句 一 循环语句介绍 1 循环语句理解 2 循环语句示意图 二 循环语句的分类 三 循环控制语句 四 while循环 1 while死循环 2 while条件循环 五 break和continue 1 break使用
  • TCP三次握手和四次挥手 详解

    首先了解下TCP报文 16位源端口号 16位的源端口中包含初始化通信的端口 源端口和源IP地址的作用是标识报文的返回地址 16位目的端口号 16位的目的端口域定义传输的目的 这个端口指明报文接收计算机上的应用程序地址接口 32位序号 32位
  • QProcess调用外部程序阻塞等待问题解决

    QProcess调用外部程序阻塞等待问题解决 简介 第一种 第二种 简介 在使用QProcess调用外部程序时 可能会遇到两种场景 1 调用起来之后就不管 直接运行后面的代码 2 调用起来后需要等待外部程序执行完成 在继续运行下面的代码 第
  • jdbc连接数据库获取所有表,表的字段及类型之Oracle

    https blog csdn net hhhliushen article details 105272439 昨天写的这篇jdbc连接数据库获得所有表 表的所有字段及类型对于mysql来说速度还是可以的 但是对于oracle来说 真的是
  • springboot工程中生成二维码(Java)

    需求 在系统中生成一个二维码 用户保存下来并分享出去 其他人扫描之后跳到我们的一个活动详情页 查看此活动的内容 需求分析 从以上的需求中 可以提炼出以下几点 当用户点击生成二维码的时候 我们要拿到用户生成的二维码是关于哪个活动的 请求来到后
  • 前端工程师的摸鱼日常(19)

    图为恐子真身 史记记载恐子九尺六寸高 根据春秋的尺度换算 有一米九至两米多高 人皆畏之 一米九的山东大汉 手下七十二堂口 帮派 三千门生 小弟 由他弟子所编写的 抡语 这是为我们讲述了 春秋道上的规矩 首先 仁义礼智信 并不是字面上的意思
  • Matlab:生成特定范围的随机数

    Matlab 生成特定范围的随机数 在Matlab中 我们可以使用rand函数来生成随机数 但有时候我们只需要在特定的范围内生成随机数 这时候 我们可以使用Matlab提供的一些函数来实现 生成0到1之间的随机数 如果需要生成0到1之间的随
  • FISCO BCOS上使用第三方CA证书底层节点部署实操

    CA证书怎么生成 节点相互验证证书时会交叉验证吗 对于社区常遇到的此类问题 分享一些个人使用第三方CA证书部署底层节点的经验 希望可以给大家一些借鉴与参考 为什么要对第三方CA证书进行改造 首先 说明一下我进行第三方CA证书改造的背景和原因