AWS托管Hyperledger Fabric v1.4.7客户端连接报bad certificate错误
问题根因及修复方案
1. Peer/CA域名配置错误(核心错误)
客户端日志中显示的peer节点实际端点为nd-xxx.managedblockchain.ap-southeast-1.amazonaws.com:30003,你的CCP配置存在两处低级域名错误:
- 域名多了重复的
managedblockchain层级:配置中错误写为xxx.managedblockchain.managedblockchain.us-east-1.amazonaws.com,多余的managedblockchain层级导致域名无效 - 区域配置不匹配:实际资源部署在
ap-southeast-1(新加坡区),配置中错误填写为us-east-1(弗吉尼亚区)
域名不匹配会直接触发TLS证书校验失败,抛出bad certificate错误。
2. TLS证书路径配置错误
你的客户端应用运行在Docker容器内,CCP中填写的/home/ec2-user/managedblockchain-tls-chain.pem是EC2宿主机的文件路径,容器内默认不存在该路径:
- 确认启动容器时已将宿主机的
managedblockchain-tls-chain.pem挂载到容器内的指定路径,例如/app/certs/managedblockchain-tls-chain.pem - 将CCP中所有
tlsCACerts.path字段的值修改为容器内的证书实际路径
3. ssl-target-name-override配置错误
AWS托管Hyperledger Fabric的TLS校验要求ssl-target-name-override填写peer节点的完整域名,而不是短节点ID:
请将grpcOptions.ssl-target-name-override的值从nd-CJFWWNIMUJABLLEVL6YITQQMXI修改为peer的完整域名(修正区域和重复层级后的正确域名)。
修正后的配置参考示例
--- name: n-RH3K6KAHFND6BGTXXGRU7C3B5Q version: 1.0.0 client: organization: Org1 connection: timeout: peer: endorser: "300" channels: mychannel: peers: nd-CJFWWNIMUJABLLEVL6YITQQMXI: endorsingPeer: true chaincodeQuery: true ledgerQuery: true eventSource: true organizations: Org1: mspid: m-L3ASCXXBINCWRBTIRBGPP4BP7U peers: - nd-CJFWWNIMUJABLLEVL6YITQQMXI certificateAuthorities: - m-L3ASCXXBINCWRBTIRBGPP4BP7U peers: nd-CJFWWNIMUJABLLEVL6YITQQMXI: url: grpcs://nd-cjfwwnimujabllevl6yitqqmxi.m-l3ascxxbincwrbtirbgpp4bp7u.n-rh3k6kahfnd6bgtxxgru7c3b5q.managedblockchain.ap-southeast-1.amazonaws.com:30003 eventUrl: grpcs://nd-cjfwwnimujabllevl6yitqqmxi.m-l3ascxxbincwrbtirbgpp4bp7u.n-rh3k6kahfnd6bgtxxgru7c3b5q.managedblockchain.ap-southeast-1.amazonaws.com:30004 grpcOptions: ssl-target-name-override: nd-cjfwwnimujabllevl6yitqqmxi.m-l3ascxxbincwrbtirbgpp4bp7u.n-rh3k6kahfnd6bgtxxgru7c3b5q.managedblockchain.ap-southeast-1.amazonaws.com tlsCACerts: path: <替换为容器内证书实际路径> certificateAuthorities: m-L3ASCXXBINCWRBTIRBGPP4BP7U: url: https://ca.m-l3ascxxbincwrbtirbgpp4bp7u.n-rh3k6kahfnd6bgtxxgru7c3b5q.managedblockchain.ap-southeast-1.amazonaws.com:30002 httpOptions: verify: false tlsCACerts: path: <替换为容器内证书实际路径> caName: m-L3ASCXXBINCWRBTIRBGPP4BP7U
额外校验项
- 确认Docker容器启动时挂载证书的路径和配置内路径一致,且容器内运行应用的用户对证书文件有读权限
- 确认客户端使用的用户证书、私钥和MSP ID和cli使用的完全一致,且证书未过期
内容的提问来源于stack exchange,提问作者Niraj Kumar
相关产品推荐
相关产品推荐

