Fabric chaincode - Communicate with Vault



我需要以某种方式与某个链码中的Vault实例通信。

我的问题是我需要Vault上的(相互)TLS,因此为了使链码与之通信,它需要由适当的CA颁发的适当证书。

安装链码的对等体和Vault实例都使用相同的根CA。

那么,我如何在链码中获取适当的证书并将它们用于向Vault实例发出的请求呢?如果它,不知何故,帮助:

日志从链码容器当我发出请求:

2021-01-21T14:18:29.847Z error [c-api:_]                                          Unhandled Rejection reason RequestError: Error: unable to verify the first certificate promise Promise {
<rejected> RequestError: Error: unable to verify the first certificate
at new RequestError (/usr/local/src/node_modules/request-promise-core/lib/errors.js:14:15)
at Request.plumbing.callback (/usr/local/src/node_modules/request-promise-core/lib/plumbing.js:87:29)
at Request.RP$callback [as _callback] (/usr/local/src/node_modules/request-promise-core/lib/plumbing.js:46:31)
at self.callback (/usr/local/src/node_modules/request/request.js:185:22)
at Request.emit (events.js:311:20)
at Request.onRequestError (/usr/local/src/node_modules/request/request.js:881:8)
at ClientRequest.emit (events.js:311:20)
at TLSSocket.socketErrorListener (_http_client.js:426:9)
at TLSSocket.emit (events.js:311:20)
at emitErrorNT (internal/streams/destroy.js:92:8) {
name: 'RequestError',
message: 'Error: unable to verify the first certificate',
cause: Error: unable to verify the first certificate
at TLSSocket.onConnectSecure (_tls_wrap.js:1473:34)
at TLSSocket.emit (events.js:311:20)
at TLSSocket._finishInit (_tls_wrap.js:916:8)
at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:686:12) {
code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
},
error: Error: unable to verify the first certificate
at TLSSocket.onConnectSecure (_tls_wrap.js:1473:34)
at TLSSocket.emit (events.js:311:20)
at TLSSocket._finishInit (_tls_wrap.js:916:8)
at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:686:12) {
code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
},
options: {
json: [Object],
resolveWithFullResponse: true,
simple: false,
strictSSL: true,
method: 'PUT',
path: '/sys/unseal',
headers: [Object],
uri: 'https://vaultinstance.com:8200/v1/sys/unseal',
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined
}
}  

请求时来自vault的日志:

2021-01-21T14:20:59.784Z [INFO]  http: TLS handshake error from 192.168.224.1:51074: remote error: tls: unknown certificate

没有办法在安装时向chaincode提供秘密配置信息,所以除非您将证书包含在chaincode包中,这可能是一个坏主意,所以我认为您的chaincode将需要一个init事务来使用瞬态数据发送所需的证书。

chaincode生命周期文档描述了如何要求init事务。

如果您正在使用Fabric peer CLI,则可以使用——init-required在批准和提交链码定义时标记,以指示必须调用Init函数来初始化新的chaincode的版本。如果要使用Fabric peer命令行调用Init,请使用peerchaincode调用命令并传递——isInit标志。

私有数据描述了初始化链码时如何保护TLS证书。

或者,如果您不想使用init事务或将TLS证书存储在分类账/私有数据集合中,您可以使用瞬态数据向需要与保险库通信的每个事务提供TLS证书,并将其留给客户端来管理证书。

相关内容

  • 没有找到相关文章

最新更新