Hyperledger Blockchain Explorer报SSL3_GET_RECORD版本错误如何修复?
修复Hyperledger Blockchain Explorer的SSL版本握手错误
我之前也碰到过一模一样的SSL握手问题,这个错误本质是Explorer的Node.js环境和Fabric节点使用的TLS版本不匹配导致的。下面是亲测有效的解决步骤:
1. 强制Node.js使用兼容的TLS版本
Hyperledger Fabric从1.4版本开始就默认使用TLS 1.2,而部分旧版Node.js可能默认启用了更低的SSL版本。你可以在启动Explorer时临时强制指定TLS最小版本:
NODE_OPTIONS="--tls-min-v1.2" node main.js
如果这个方法有效,建议把这个环境变量加到Explorer的启动脚本里,避免每次手动输入。
2. 修正Explorer的连接配置
打开Explorer的config.json或者对应的Fabric连接配置文件(通常在connection-profiles目录下),确保以下配置正确:
- 每个peer和orderer的
tls属性设置为true - 正确配置
tlsCACerts.path,指向Fabric节点生成的合法根证书文件(比如crypto-config/peerOrganizations/xxx.com/peers/peer0.xxx.com/tls/ca.crt) - 添加
"ssl-target-name-override": "<你的节点域名>"(比如peer0.org1.example.com),这个配置可以解决域名不匹配导致的SSL验证失败问题
3. 确保Node.js和依赖包版本兼容
- 先检查Node.js版本,运行
node -v,Hyperledger Fabric和Explorer推荐使用LTS版本(比如14.x或16.x),如果你的版本低于12.x,建议升级到兼容的LTS版本。 - 检查
grpc和fabric-network等核心依赖的版本,确保和你的Fabric版本匹配(比如Fabric 2.x需要对应版本的fabric-network)。可以运行npm list grpc fabric-network查看当前版本,然后更新:
npm install grpc@<兼容版本> fabric-network@<兼容版本> --save
如果更新后仍有问题,删除node_modules文件夹和package-lock.json,重新执行npm install,确保依赖安装干净。
4. 验证Fabric节点的TLS配置
有时候问题出在Fabric节点这边,你可以用openssl测试节点的TLS 1.2支持情况:
openssl s_client -connect peer0.org1.example.com:7051 -tls1_2
如果连接成功并返回证书信息,说明节点的TLS配置正常;如果失败,需要修改Fabric节点的配置文件(比如peer.yaml或orderer.yaml),在TLS部分设置:
TLS: Enabled: true MinVersion: TLSv1.2 Cert: Path: <节点证书路径> Key: Path: <节点密钥路径> RootCAs: - <根证书路径>
修改后重启Fabric节点,再重新测试连接。
内容的提问来源于stack exchange,提问作者Tushar Goswami
相关产品推荐
相关产品推荐

