Hyperledger Blockchain Explorer的问题

问题描述 投票:0回答:3

我尝试按照此处提供的说明为Hyperledger Fabric 1.0部署Hyperledger Blockchain Explorer:https://github.com/hyperledger/blockchain-explorer

但是,每当我尝试启动main.js时,我都会收到以下错误:

`[2017-11-17 20:57:53.785] [ERROR] Helper - Error: Calling enrollment endpoint failed with error [Error: write EPROTO 140480353146688:error:1411713E:SSL routines:ssl_check_srvr_ecc_cert_and_alg:ecc cert not for signing:../deps/openssl/openssl/ssl/ssl_lib.c:2520:
140480353146688:error:14082130:SSL routines:ssl3_check_cert_and_algorithm:bad ecc cert:../deps/openssl/openssl/ssl/s3_clnt.c:3550:
]
at ClientRequest.<anonymous> (/opt/gopath/src/github.com/hyperledger/blockchain-explorer/node_modules/fabric-ca-client/lib/FabricCAClientImpl.js:711:12)
at emitOne (events.js:116:13)
at ClientRequest.emit (events.js:211:7)
at TLSSocket.socketErrorListener (_http_client.js:387:9)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at onwriteError (_stream_writable.js:408:12)
at onwrite (_stream_writable.js:430:5)
at _destroy (internal/streams/destroy.js:39:7)
at TLSSocket.Socket._destroy (net.js:561:3)
[2017-11-17 20:57:53.787] [ERROR] Helper - admin enrollment failed`

我确保正确配置了config.json。我没有编辑tls设置或路径。第一网络(./byfn.sh)生成的证书肯定是正确的,因为byfn设置最终成功。

我认为资源管理器处理证书的方式有问题,但我不知道在哪里搜索解决方案。

任何有关上述的帮助将不胜感激!

hyperledger-fabric hyperledger hyperledger-explorer
3个回答
0
投票

您必须在docker-compose-e2e-template.yaml中提供CA的正确凭据(ca文件夹存在于网络中每个组织的msp文件夹中)。

对于Eg。

  • FABRIC_CA_SERVER_TLS_CERTFILE =的/ etc / hyperledger /织物-CA-服务器配置/ ca.org1.example.com-cert.pem
  • FABRIC_CA_SERVER_TLS_KEYFILE =的/ etc / hyperledger /织物-CA-服务器配置/ f0a8e7e64651071b720e47eb4c71a3610cadb185a1ace6c029d8b41688fde6b2_sk

在卷部分中,以这种方式提供映射 - ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config

不使用url中的localhost,而是使用Docker使用的IP(仅当您使用Docker QuickStart Terminal时才适用)(在我的情况下,它是192.168.99.100)。

在enrollAdmin.js文件中,

var caRootsPath =“./crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem”let data = fs.readFileSync(caRootsPath); let caroots = Buffer.from(data).toString();

var tlsOptions = {
    trustedRoots: caroots,
    verify: true // Make it false if some error like Hostname/IP doesn't match certificate's altnames: "IP: 192.168.99.100 is not in the cert's list occurs. This error can also be removed if you have admin access to your computer. 
};
// be sure to change the http to https when the CA is running TLS enabled
fabric_ca_client = new Fabric_CA_Client('https://192.168.99.100:7054', tlsOptions , 'ca-org1', crypto_suite);

0
投票

如果您正在使用测试或本地TLS Fabric同伴,您还必须执行以下操作:https://github.com/hyperledger/blockchain-explorer

“如果您要连接到非TLS结构对等体:请修改对等URL中的协议(grpcs-> grpc)和端口(9051-> 9050)并删除tls_cacerts”

我能够看到一个空白页面,其中包含“无法获取/无法获取”和非常昂贵的API链接:http://localhost:9000/api-docs/#/现在正常运行。我只需要弄清楚业务网络特定密钥/证书的存储位置。


0
投票

当我使用Hyperledger Fabric 1.2版本部署区块链资源管理器时,问题再次出现,但解决方案首先无法解决我的问题:

unknown protocol SSL routines:ssl3_check_cert_and_algorithm:bad ecc cert:../deps/openssl/openssl/ssl/s3_clnt.c:3550:

起初,我认为它是由版本不兼容引起的,因为在我将网络升级到结构1.2或1.1之前似乎工作正常。但是,为了区块链资源管理器,不必将我的结构网络降级到1.0。在github / composer开设的其他类似问题确实给了我一些关于这个问题的提示,但仍然不能完全解决它。

使用像node --inspect-brk:0.0.0.0:9229 server.js这样的同步调试工具可以帮助我解决这个问题:

我的错误日志与上面打印的日志相同,发生在FabricCAClientImpl.js:711:12。要去定义代码,它会抛出一个错误:

request.on('error', function (err) {
reject(new Error(util.format('Calling enrollment endpoint failed with error [%s]', err)));
});

使用self._httpClient.request发送http请求后调用该函数:

var request = self._httpClient.request(requestOptions, function (response)

查看self._httpClient的定义,它显示模块https是在代码的头部导入的。这就是为什么有些解决方案建议我们将TLS_ENABLEfalse更改为true,并在配置文件中将grpcs修改为grpc。但在后一版本中,结构使用连接配置文件来帮助我们加载keycerts。

官方连接配置文件示例文件使用https作为默认值,但我们可以将其更改为http URL并强制客户端使用http策略,如:

ca:
  url: http://localhost:7054
  httpOptions:
     verify: true
© www.soinside.com 2019 - 2024. All rights reserved.