【发布时间】:2020-04-24 03:31:07
【问题描述】:
启用 tls 并尝试向对等方发送交易提议时出现低于 gRPC 错误。
从这里获取参考代码:https://developer.ibm.com/tutorials/hyperledger-fabric-java-sdk-for-tls-enabled-fabric-network/ 我已在所有对等方和整个网络上启用 TLS。我也尝试直接在代码中提供证书/pem 字符串。但是,同样的例外。
我在这里缺少什么?我直接从 Eclipse 运行客户端应用程序。 提前谢谢你。
-------------- 代码开始---------------
HFClient hfClient = HFClient.createNewInstance();
hfClient.setCryptoSuite(cryptoSuite);
hfClient.setUserContext(admin_registar);
String peer_name = "peer0.org1.example.com";
String peer_url = "grpcs://localhost:7051"; // Ensure that port is of peer1
String peerTLSCertFileName = "crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"; ***// Taking TLS certitifcate***
Properties peerProperties = new Properties();
peerProperties.setProperty("pemFile", peerCertFile.getAbsolutePath());
peerProperties.setProperty("allowAllHostNames", "true");
Path peerPath = Paths.get(peerTLSCertFileName); ;
peerProperties.put("pemBytes", Files.readAllBytes(peerPath));
**peerProperties.setProperty("sslProvider", "openSSL"); // SETTING TLS properties
peerProperties.setProperty("negotiationType", "TLS"); // SETTING TLS properties**
Peer peer = hfClient.newPeer(peer_name, peer_url, peerProperties);
<< --- Similar code to add Orderer to HFClient --->>
Channel channel = hfClient.newChannel("mychannel");
channel.addPeer(peer);
channel.addOrderer(orderer);
channel.initialize();
TransactionProposalRequest request = hfClient.newTransactionProposalRequest();
String cc = "fabcar"; // Chaincode name
ChaincodeID ccid = ChaincodeID.newBuilder().setName(cc).build();
request.setChaincodeID(ccid);
request.setFcn("createCar"); // Chaincode invoke funtion name
String[] arguments = {"CAR11", "VgW", "Poglo", "Ggrey", "Margy"}; // Arguments that Chaincode function takes
request.setArgs(arguments);
request.setProposalWaitTime(3000);
**Collection<ProposalResponse> responses = channel.sendTransactionProposal(request); // this is line throwing exception**
-------------- 代码结束---------------
下面的异常是上面最后一行代码:
线程“主”org.hyperledger.fabric.sdk.exception.ProposalException 中的异常:org.hyperledger.fabric.sdk.exception.TransactionException:org.hyperledger.fabric.sdk.exception.ProposalException:通道mychannel 的getConfigBlock 失败与同行 peer0.org1.example.com。状态失败,详细信息:Channel Channel{id: 3, name: mychannel} 发送带有事务的提案:353dde2899c1993b9e643ac32b7b9c27ae4eeda1aaa17bc13f1c35f91795a9f7 到 Peer{ id: 1, name: peer0.org1.example.com, channelName: mychannel, url: grpcs: //localhost:7051} 失败,因为:gRPC failure=Status{code=UNAVAILABLE, description=io exception 通道管道:[SslHandler#0,ProtocolNegotiators$ClientTlsHandler#0,WriteBufferingAndExceptionHandler#0,DefaultChannelPipeline$TailContext#0],cause=javax.net.ssl.SSLHandshakeException:一般 OpenSslEngine 问题 在
【问题讨论】:
标签: hyperledger-fabric hyperledger hyperledger-chaincode