ssl_transport_security.cc:599] 无法加载任何根证书
ssl_transport_security.cc:599] Could not load any root certificate
我尝试使用 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 : 如果需要我可以提供代码。
仔细检查步骤,这是一个漫长的多步骤过程,您需要安装多个库,您是否完成了所有步骤?
首先,请检查您使用的是 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 出现在每一行的末尾,但证书中没有换行符(全部在一个字符串中,包括 \n s)
最后,确保您在 docker-compose.yml 文件中所做的任何卷映射都引用了正确的加密 material.
"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"
}
},
好的,我想我可以回答我自己的问题了。
问题在于 MultiOrg Hyperledger tuto 他们使用此命令替换 connection.json 中的证书:
awk 'NF {sub(/\r/, ""); printf "%s\n",[=10=];}' crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
我尝试在我的 sed
cmd 中注入这个 cmd 但它失败了,因为 sed 似乎用一个真正的新行替换了 '\n' 使 json 损坏。
为了替换 json 文件中的证书,我使用了这个命令:
export ORG1_CA_CERT=$(awk 'NF {sub(/\r/, ""); printf "%s\n",[=11=];}' 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 正确地打印了字符并且不解释它们。
我尝试使用 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 : 如果需要我可以提供代码。
仔细检查步骤,这是一个漫长的多步骤过程,您需要安装多个库,您是否完成了所有步骤?
首先,请检查您使用的是 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 出现在每一行的末尾,但证书中没有换行符(全部在一个字符串中,包括 \n s)
最后,确保您在 docker-compose.yml 文件中所做的任何卷映射都引用了正确的加密 material.
"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"
}
},
好的,我想我可以回答我自己的问题了。 问题在于 MultiOrg Hyperledger tuto 他们使用此命令替换 connection.json 中的证书:
awk 'NF {sub(/\r/, ""); printf "%s\n",[=10=];}' crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
我尝试在我的 sed
cmd 中注入这个 cmd 但它失败了,因为 sed 似乎用一个真正的新行替换了 '\n' 使 json 损坏。
为了替换 json 文件中的证书,我使用了这个命令:
export ORG1_CA_CERT=$(awk 'NF {sub(/\r/, ""); printf "%s\n",[=11=];}' 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 正确地打印了字符并且不解释它们。