我尝试使用hyperledger compposer / fabric(v0.19.0)创建自己的网络
网络构建似乎很好但是当我做一个
composer network install ...
我收到了这个错误:
Composer Install....
⠹ Installing business network. This may take a minute...E0405 10:16:40.355332702 7660 ssl_transport_security.cc:599] Could not load any root certificate.
E0405 10:16:40.355402056 7660 ssl_transport_security.cc:1400] Cannot load server root certificates.
E0405 10:16:40.355430951 7660 security_connector.cc:1025] Handshaker factory creation failed with TSI_INVALID_ARGUMENT.
E0405 10:16:40.355453680 7660 secure_channel_create.cc:111] Failed to create secure subchannel for secure name '172.31.136.4:7051'
E0405 10:16:40.355471629 7660 secure_channel_create.cc:142] Failed to create subchannel arguments during subchannel creation.
任何人都可以帮助我吗?
PS:如果需要,我可以提供代码。
答案 0 :(得分:2)
好的,我想我可以回答我自己的问题。 fack位于MultiOrg Hyperledger tuto,他们使用此cmd替换connection.json中的证书:
awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
我尝试在我的sed
cmd中注入此cmd,但它失败了,因为sed似乎取代了' \ n'通过一个真正的新线使json损坏。
要替换json文件中的证书,我使用了这个cmd:
export ORG1_CA_CERT=$(awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' composer/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt)
perl -p -i -e 's@INSERT_ORG1_CA_CERT@$ENV{ORG1_CA_CERT}@g' connection.json
它的工作原理是因为perl正确打印了字符并且没有解释它们。
答案 1 :(得分:0)
仔细检查这些步骤,这是一个漫长的多步骤过程,您需要安装多个库,是否已完成所有步骤?
答案 2 :(得分:0)
首先,请检查您是否正在使用Fabric v1.1 GA for Composer v0.19.0
看起来您正在使用IP号码地址,例如你的connection.json中的172.31.136.4。请根据以下示例检查您是否使用ssl-target-name-override
。
同时确保您在connection.json中使用正确的PEM证书并且它们的格式正确,即它们包括“BEGIN CERTIFICATE”和“END CERTIFICATE”行,并且\ n结尾存在每行,但证书中没有换行符(所有在一个字符串中包括\ ns)
最后,确保您在docker-compose.yml文件中执行的任何Volume映射都引用了正确的加密材料。
"orderers": {
"orderer.example.com": {
"url": "grpcs://172.31.136.3:7050",
"grpcOptions": {
"ssl-target-name-override": "orderer.example.com"
},
"tlsCACerts": {
"pem": "INSERT_ORDERER_CA_CERT"
}
}
},
"peers": {
"peer0.org1.example.com": {
"url": "grpcs://172.31.136.4:7051",
"eventUrl": "grpcs://172.31.136.4:7053",
"grpcOptions": {
"ssl-target-name-override": "peer0.org1.example.com"
},
"tlsCACerts": {
"pem": "INSERT_ORG1_CA_CERT"
}
},