Hyperledger fabric &引用;gRPC failure=Status{code=UNAVAILABLE,description=io exception";调用';通道.sendTransactionProposal';

Hyperledger fabric &引用;gRPC failure=Status{code=UNAVAILABLE,description=io exception";调用';通道.sendTransactionProposal';,hyperledger-fabric,hyperledger,hyperledger-chaincode,Hyperledger Fabric,Hyperledger,Hyperledger Chaincode,启用tls并尝试向对等方发送事务建议时,低于gRPC错误 参考代码如下: 我已经在所有对等点和整个网络上启用了TLS。我也尝试在代码中直接提供证书/pem字符串。但是,相同的例外 我缺少什么?我直接从Eclipse运行客户端应用程序。 先谢谢你 -------------------------代码开始--------------- HFClient-HFClient=HFClient.createNewInstance(); hfClient.setCryptoSuite(cryptoSuit

启用tls并尝试向对等方发送事务建议时,低于gRPC错误

参考代码如下: 我已经在所有对等点和整个网络上启用了TLS。我也尝试在代码中直接提供证书/pem字符串。但是,相同的例外

我缺少什么?我直接从Eclipse运行客户端应用程序。 先谢谢你

-------------------------代码开始---------------

HFClient-HFClient=HFClient.createNewInstance();
hfClient.setCryptoSuite(cryptoSuite);
setUserContext(管理注册表);
字符串peer_name=“peer0.org1.example.com”;
字符串peer_url=”grpcs://localhost:7051“;//确保端口为对等端口1
String peerTLSCertFileName=“加密配置/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt”;***//获取tls认证***
Properties peerProperties=新属性();
setProperties(“pemFile”,peerCertFile.getAbsolutePath());
peerProperties.setProperty(“AllowlHostNames”、“true”);
Path peerPath=Path.get(peerTLSCertFileName);
peerProperties.put(“pemBytes”,Files.readAllBytes(peerPath));
**setProperties(“sslProvider”、“openSSL”);//设置TLS属性
peerProperties.setProperty(“negotiationType”、“TLS”);//设置TLS属性**
Peer-Peer=hfClient.newPeer(Peer\u名称、Peer\u url、peerProperties);
>
Channel Channel=hfClient.newChannel(“mychannel”);
channel.addPeer(peer);
channel.addorder(order);
channel.initialize();
TransactionProposalRequest=hfClient.newTransactionProposalRequest();
字符串cc=“fabcar”;//链码名称
ChaincodeID ccid=ChaincodeID.newBuilder().setName(cc.build();
setChaincodeID(ccid);
request.setFcn(“createCar”);//链码调用函数名
String[]arguments={“CAR11”、“VgW”、“Poglo”、“Ggrey”、“Margy”};//Chaincode函数采用的参数
request.setArgs(参数);
请求。setProposalWaitTime(3000);
**集合响应=channel.sendTransactionProposal(请求);//这是行抛出异常**
-------------------------代码结束---------------

以下例外情况位于上面代码的最后一行: 线程“main”org.hyperledger.fabric.sdk.Exception.ProposalException:org.hyperledger.fabric.sdk.Exception.TransactionException:org.hyperledger.fabric.sdk.Exception.ProposalException:通道mychannel的getConfigBlock与对等peer0.org1.example.com失败。状态失败,详细信息:通道通道{id:3,名称:mychannel}将交易编号为353DDE2899C1993B9E643AC32B7B9C27AE4EEDA1A1AA7BC13F1C35F91795A9F7的提案发送至对等方{id:1,名称:peer0.org1.example.com,渠道名称:mychannel,url:grpcs://localhost:7051}由于以下原因而失败:gRPC failure=状态{code=不可用,description=io异常 通道管道:[SslHandler#0,协议谈判者$ClientTlsHandler#0,WriteBufferingAndExceptionHandler#0,DefaultChannelPipeline$TailContext#0],原因=javax.net.ssl.SSLHandshakeException:一般OpenSslEngine问题

我没有运行CreateChannel命令时就遇到了这个问题

java-cp blockchain-client.jar org.example.network.CreateChannel

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**