🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。
  
📌 特别说明:
文中问题案例来源于真实生产环境与公开技术社区,并结合多位一线资深工程师与架构师的长期实践经验,经过人工筛选与AI系统化智能整理后输出。文中的解决方案并非唯一“标准答案”,而是兼顾可行性、可复现性与思路启发性的实践参考,供你在实际项目中灵活运用与演进。
  
欢迎订阅本专栏,一次订阅后,专栏内所有文章可永久免费阅读,后续更新内容皆不用再次订阅,持续更新中。

📢 问题描述

详细问题描述如下: bcos搭建在启动环节遇到问题:在启动的时候遇到了如下这种问题,能否问问有什么办法?可以解决吗?

📣 请知悉:如下方案不保证一定适配你的问题!

  如下是针对上述问题进行专业角度剖析答疑,不喜勿喷,仅供参考:

✅️ 问题理解

从如上截图中可以清晰看出,这是 FISCO BCOS Java SDK 启动时的证书缺失错误,核心报错如下:

create BcosSDK failed, error info: init channel network error!
org.fisco.bcos.sdk.network.NetworkException

两步连接均失败:

  • STEP1:尝试用 ecdsa 上下文连接节点 → 失败,缺少证书:

    conf/ca.crt, conf/sdk.crt, conf/sdk.key
    
  • STEP2:尝试用 sm(国密)上下文连接 → 失败,缺少证书:

    conf/gm/gmca.crt, conf/gm/gmsdk.crt, conf/gm/gmsdk.key,
    conf/gm/gmensdk.key, conf/gm/gmensdk.crt
    

根本原因: 启动脚本 start.sh 执行时,当前目录 /root/fisco/console 下的 conf/ 文件夹中缺少对应的 SDK 证书文件,导致 SDK 无法与节点建立 TLS 安全通道。

环境信息:FISCO BCOS Java SDK 2.10.0,Java 1.8.0_412,OS Linux amd64,非国密模式(ecdsa 优先)

✅️ 问题解决方案

🟢 方案 A:从节点目录拷贝 SDK 证书(最常用、最推荐)

这是官方标准做法,证书由节点生成,需手动拷贝到 console 的 conf 目录。

步骤如下:

第一步:确认节点证书位置

FISCO BCOS 节点通常通过 build_chain.sh 脚本生成,默认路径结构如下:

~/fisco/
├── nodes/
│   └── 127.0.0.1/
│       ├── node0/
│       │   └── conf/
│       │       ├── ca.crt          ✅ 需要拷贝
│       │       ├── sdk.crt         ✅ 需要拷贝
│       │       └── sdk.key         ✅ 需要拷贝
│       └── sdk/                    ← 有些版本在此目录
│           ├── ca.crt
│           ├── sdk.crt
│           └── sdk.key

第二步:拷贝证书到 console/conf/

# 方式1:从 sdk/ 目录拷贝(推荐,build_chain.sh 2.x 标准输出)
cp ~/fisco/nodes/127.0.0.1/sdk/* ~/fisco/console/conf/

# 方式2:从 node0/conf/ 拷贝
cp ~/fisco/nodes/127.0.0.1/node0/conf/ca.crt ~/fisco/console/conf/
cp ~/fisco/nodes/127.0.0.1/node0/conf/sdk.crt ~/fisco/console/conf/
cp ~/fisco/nodes/127.0.0.1/node0/conf/sdk.key ~/fisco/console/conf/

第三步:验证文件存在

ls -la ~/fisco/console/conf/
# 应看到:ca.crt  sdk.crt  sdk.key  config.toml/applicationContext.xml

第四步:重新启动

cd ~/fisco/console && bash start.sh
🟡 方案 B:检查并修正 config.toml 中的证书路径配置

有时候证书文件存在,但配置文件中指定的路径不正确,同样会报此错误。

检查配置文件:

cat ~/fisco/console/conf/config.toml

重点关注如下字段:

[network]
peers=["127.0.0.1:20200"]    # 确认节点 IP 和端口正确

[account]
keyStoreDir = "account"

[cryptoMaterial]
certPath = "conf"             # ← 证书目录,相对于启动目录
caCert = "conf/ca.crt"        # ← 确认此路径下文件存在
sslCert = "conf/sdk.crt"
sslKey = "conf/sdk.key"

如果是国密(SM2)节点,需额外配置:

[cryptoMaterial]
certPath = "conf"
caCert = "conf/ca.crt"
sslCert = "conf/sdk.crt"
sslKey = "conf/sdk.key"
enSslCert = "conf/gm/gmensdk.crt"
enSslKey = "conf/gm/gmensdk.key"

修改后重启:

cd ~/fisco/console && bash start.sh
🔴 方案 C:重新执行建链脚本并完整初始化(环境严重损坏时使用)

如果证书文件彻底丢失或环境混乱,建议重建:

cd ~/fisco

# 重新下载建链脚本
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.10.0/build_chain.sh
chmod u+x build_chain.sh

# 重新建链(单机4节点)
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545

# 启动节点
bash nodes/127.0.0.1/start_all.sh

# 重新下载控制台
cd ~/fisco
curl -#LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh
bash download_console.sh

# 拷贝证书
cp nodes/127.0.0.1/sdk/* console/conf/

# 启动控制台
cd console && bash start.sh

✅️ 证书结构完整性速查

✅️ 问题延伸

1. FISCO BCOS 证书体系说明

证书文件 作用
ca.crt 链的根证书,用于验证节点身份
sdk.crt SDK 客户端证书
sdk.key SDK 客户端私钥
gm/gmca.crt 国密根证书
gm/gmensdk.crt/key 国密加密证书(双证书机制)

2. FISCO BCOS 2.x vs 3.x 证书路径差异

  • 2.x:证书在 node0/conf/sdk/ 目录
  • 3.x(Air版):证书在 nodes/127.0.0.1/sdk/ 目录,配置文件改为 config.ini

3. 为什么需要双重连接尝试(ecdsa + sm)?

SDK 2.10.0 会自动探测节点是否为国密节点,先尝试标准 ecdsa,失败后再尝试 sm,若两者均失败则抛出 NetworkException。这是 SDK 的容错机制,并非两次独立错误。

✅️ 问题预测

风险点 可能出现的问题 预防措施
证书权限问题 拷贝后权限不足导致读取失败 chmod 644 conf/*.crt chmod 600 conf/*.key
节点未启动 证书正确但节点进程未运行 ps aux | grep fisco 确认节点进程
端口被占用/防火墙 20200 端口不通 telnet 127.0.0.1 20200 测试连通性
Java版本不兼容 JDK 17+ 可能有 NamedCurves 限制 推荐使用 JDK 1.8,截图已是 1.8.0_412 ✅
证书与节点不匹配 拷贝了其他链的证书 确保证书来自同一次 build_chain.sh 生成
config.toml 未配置 控制台默认配置连接地址错误 检查 peers 配置是否为实际节点地址

✅️ 小结

🎯 这个问题 95% 的情况只需一步解决:把节点生成的 SDK 证书拷贝到 console/conf/ 目录即可!

# 一行命令搞定 🚀
cp ~/fisco/nodes/127.0.0.1/sdk/* ~/fisco/console/conf/

核心要点回顾:

  • 🔑 FISCO BCOS 使用双向 TLS 认证,SDK 必须持有有效证书才能连接节点
  • 📁 证书由 build_chain.sh 自动生成,存放于节点目录的 sdk/ 子目录
  • 🔄 SDK 2.10.0 会先尝试 ecdsa,再尝试国密,两者都需要对应证书
  • ✅ 拷贝证书后重启 console,问题即可解决

加油!区块链环境搭建初期遇到这类问题非常正常,解决后就顺了。

🌹 结语 & 互动说明

希望以上分析与解决思路,能为你当前的问题提供一些有效线索或直接可用的操作路径

若你按文中步骤执行后仍未解决:

  • 不必焦虑或抱怨,这很常见——复杂问题往往由多重因素叠加引起;
  • 欢迎你将最新报错信息、关键代码片段、环境说明等补充到评论区;
  • 我会在力所能及的范围内,结合大家的反馈一起帮你继续定位 👀

💡 如果你有更优或更通用的解法:

  • 非常欢迎在评论区分享你的实践经验或改进方案;
  • 你的这份补充,可能正好帮到更多正在被类似问题困扰的同学;
  • 正所谓「赠人玫瑰,手有余香」,也算是为技术社区持续注入正向循环

🧧 文末福利:技术成长加速包 🧧

  文中部分问题来自本人项目实践,部分来自读者反馈与公开社区案例,也有少量经由全网社区与智能问答平台整理而来。

  若你尝试后仍没完全解决问题,还请多一点理解、少一点苛责——技术问题本就复杂多变,没有任何人能给出对所有场景都 100% 套用的方案。

  如果你已经找到更适合自己项目现场的做法,非常建议你沉淀成文档或教程,这不仅是对他人的帮助,更是对自己认知的再升级。

  如果你还在持续查 Bug、找方案,可以顺便逛逛我专门整理的 Bug 专栏👉《全栈 Bug 调优(实战版)》👈️

这里收录的都是在真实场景中踩过的坑,希望能帮你少走弯路,节省更多宝贵时间。

✍️ 如果这篇文章对你有一点点帮助:

  • 欢迎给 bug菌 来个一键三连:关注 + 点赞 + 收藏
  • 你的支持,是我持续输出高质量实战内容的最大动力。

同时也欢迎关注我的硬核公众号 「猿圈奇妙屋」

获取第一时间更新的技术干货、BAT 等互联网公司最新面试真题、4000G+ 技术 PDF 电子书、简历 / PPT 模板、技术文章 Markdown 模板等资料,通通免费领取
你能想到的绝大部分学习资料,我都尽量帮你准备齐全,剩下的只需要你愿意迈出那一步来拿。

🫵 Who am I?

我是 bug菌:

  • 热活跃于 CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等技术社区;
  • CSDN 博客之星 Top30、华为云多年度十佳博主/卓越贡献者、掘金多年度人气作者 Top40;
  • 掘金、InfoQ、51CTO 等平台签约及优质作者;
  • 全网粉丝累计 30w+

更多高质量技术内容及成长资料,可查看这个合集入口 👉 点击查看 👈️

硬核技术公众号 「猿圈奇妙屋」 期待你的加入,一起进阶、一起打怪升级。

- End -

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐