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,配合白名单机制应用实现根底底层节点部署。
环境筹备
- 两台测试服务器:118.25.208.8、132.232.115.126
- 操作系统为 ubuntu:18.04
- openssl 工具应用 ubuntu 18.04 自带 openssl 1.1.1
- 选用一般版 FISCO BCOS 2.5.0 版本,节点应用的节点证书算法为 EC secp256k1 曲线
- 联合【白名单机制】一起应用
https://fisco-bcos-documentat…
备注:测试过程中节点私钥和申请证书文件对立治理,但在生产环境中节点私钥应由各机构管理员进行生成,提交给 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/…
- 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 的代码齐全开源且收费下载地址:https://github.com/FISCO-BCOS/FISCO-BCOS
2、增加小助手微信(FISCOBCOS010),进入 FISCO BCOS 技术交换群,随时随地与圈内最沉闷、最顶尖的团队畅聊技术话题、参加丰盛的社区活动。