2

我尝试使用 hyperledger composer/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:如果需要,我可以提供代码。

4

3 回答 3

2

好的,我想我可以回答我自己的问题。事实在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

我尝试在我的 cmd 中注入这个 cmd,sed但它失败了,因为 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 正确打印了字符并且不解释它们。

于 2018-04-09T12:20:05.197 回答
0

仔细检查步骤,这是一个漫长的多步骤过程,您需要安装多个库,您是否完成了所有步骤?

于 2018-04-05T10:36:59.200 回答
0

首先,只需检查您是否使用 Fabric v1.1 GA for Composer v0.19.0

看起来您在 connection.json 中使用了 IP 地址,例如 172.31.136.4。请检查您是否ssl-target-name-override按照以下示例使用。

还要确保您在 connection.json 中使用正确的 PEM 证书并且它们的格式正确,即它们包括“BEGIN CERTIFICATE”和“END CERTIFICATE”行,并且 \n 出现在每行的末尾, 但是证书中没有换行符(都在一个字符串中,包括 \ns)

最后,确保您在 docker-compose.yml 文件中执行的任何卷映射都引用了正确的加密材料。

    "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"
        }
    },
于 2018-04-05T14:14:59.917 回答