Fabric测试智能合约BUG:Server TLS handshake failed in 13...LS handshake server=Orderer remoteaddres...

        完整的一段错误是:ERRO [core.comm] ServerHandshake -> Server TLS handshake failed in 13.997µs with error tls: first record does not look like a TLS handshake server=Orderer remoteaddress=172.24.0.1:47748。

        也就是在Fabric网络连接后,链码安装后,无法激活链码实例化到orderer节点。

这个错误来源是批准链码定义

[root ~/go/src]# peer lifecycle chaincode approveformyorg -o orderer.example.com:7050 --channelID mychannel --name mychain --version 1.0 --package-id <your_chaincode_package_id> --sequence 1 --waitForEvent
# <your_chaincode_package_id> 替换为实际的链码包 ID

sampleconfig目录下的orderer.yaml文件,fabric-samples 

寻找错误原因

检查(1)fabric网络是否真正启动:

docker ps

        peer和orderer节点都启着(peer节点显示peer node start),代表fabric网络和peer节点和orderer节点都是开着的。

检查(2)域名,链码包ID是否存在

cd /etc/hosts
peer lifecycle chaincode queryinstalled
peer chaincode list --installed
# 命令二选一

检查(3)查看orderer的日志

docker logs orderer.example.com

        发现了类似这样的报错↓(总而就是TLS握手失败导致的)

2023-07-10 09:22:42.834 UTC 0010 ERRO [core.comm] ServerHandshake -> Server TLS handshake 
failed in 13.997µs with error tls: first record does not look like a TLS handshake 
server=Orderer remoteaddress=172.24.0.1:47748
2023-07-10 09:22:43.835 UTC 0011 ERRO [core.comm] ServerHandshake -> Server TLS handshake 
failed in 13.735µs with error tls: first record does not look like a TLS handshake 
server=Orderer remoteaddress=172.24.0.1:47752
2023-07-10 09:22:45.378 UTC 0012 ERRO [core.comm] ServerHandshake -> Server TLS handshake 
failed in 12.844µs with error tls: first record does not look like a TLS handshake 
server=Orderer remoteaddress=172.24.0.1:47756

  

./fabric/fabric-samples/test-network/network.sh down

./fabric/fabric-samples/test-network/network.sh up

peer chaincode install -n mychain -v 1.0 -p mychain

peer chaincode list --installed

peer lifecycle chaincode approveformyorg -o orderer.example.com:7050 --channelID mychannel --name mychain --version 1.0 --package-id 6890e2d8e6a624c8de4ea3f0963c6535a0692fc08852a475718f5b5590b8839f --sequence 1 --waitForEvent

解决BUG

        (1)能到批准这一步,说明TLS的证书都装完毕了,那么很可能是配置文件或环境变量的问题。

        (2)查环境变量(对应自己的fabric-samples/test-network的绝对路径输入即可,后面的名字是一致的)

export ORDERER_TLS_ENABLED=true
export ORDERER_ADDRESS=orderer.example.com:7050
export ORDERER_TLS_FLAG="--tls"
export ORDERER_TLS_CAFILE=/root/go/src/fabric/fabric-samples/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt
export ORDERER_TLS_ROOTCERT_FILE=/root/go/src/fabric/fabric-samples/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt

         如果有安装fabric源码,可能需要在sampleconfig目录下的core.yaml文件把peer容器下的tls属性把enabled改为true。

        (6)用脚本重启Fabric网络(如果已经开启,可能需要关闭再重启:./network.sh down)

./network.sh up

        (7)然后重新输入启动命令:

peer chaincode install -n mychain -v 1.0 -p mychain

         以上表面链码已成功安装 √ 。

猜你喜欢

转载自blog.csdn.net/lxd_max/article/details/131640465