Fabric证书过期问题

相信很多人和我们一样,开始使用Hyperledger Fabric进行项目是从他的Test-network开始的吧,从最开始的单节点配置到后来扩展到多节点配置。但是基础还是从test-network来的。

进来,一些一年前的项目陆续出现一些问题,让我们发现了fabric里面这个大坑。

那就是TLS证书过期错误。

默认启动Fabric-ca的时候,还挺简单对吧,启动docker之后,程序会自动生成root证书,并根据root证书生成后续需要的tls证书和节点证书。

但是最近出问题之后,我们深入研究了fabric-ca的默认配置文件,发现其中

 tls证书有效期默认为1年

enroll证书(各类角色,包括peer,orderer等)的证书有效期是5年。

root ca证书有效期默认是15年。

那经常会遇到问题的就是tls证书过期的问题了。也就是说,项目好端端跑了一年,就会突然遇到证书失效的问题……也是醉了。

解决方案1:重新生成tls证书

(请注意,这个方法成功完成了节点证书重新生成,但是因为提到的这个channel错误并没有最后成功)

删除fabric-ca生成的tls-cert.pem,重新启动ca,就可以重新生成tls证书,但是因为tls证书在各个节点的链接过程中,凡是涉及和ca进行认证交互的部分都需要,这个证书是拷贝到每个结构对应的所有节点了的,所以要逐个节点进行替换。

这样,5年内应该是没有问题了,5年之后,要重新执行enroll指令,为各个节点重新申请enroll证书,就可以完成续命。

经测试,在删除节点配置文件的tls文件夹之后,遇到了"channel xxx is not serviced by me"问题,经查,似乎和2.3以前版本需要创建consortium有关,这有个类似的问题

Re: identity and tls certs expired in Hyperledger fabrichttps://lists.hyperledger.org/g/fabric/message/10265但是也有可能是因为我删除的tls中有其他文件导致,fabric的安全体系太复杂,建议搜到这篇文章的小伙伴,一定要采用2.3版本以上的无consortium配置。

解决方案2:重新部署

如果你的项目数据没有需要保存的,可以采取重新部署的方式(我们试验过,只要root ca变化过,保留数据和system-genesis-block下的创世块是行不通的,所有数据的验证都依赖于root ca)。

重新部署的时候,可以手工生成一份fabric-ca-server-config.yaml(各机构一份),各机构配置中不同的部分包括name和host等。可以拷贝默认生成的yaml文件,进行二次手工编辑。

但是经研究,系统生成的fabric-ca-server-config.yaml中,csr的hosts部分包含了docker机器的hostname,用于后续在docker环境中的互联互通。

csr:
   hosts:
     - 3a913f6002ef
     - localhost

如果要自己手工编写的话,获得这个hosts有两个办法:

1)确认docker的container's ID,通常docker的hostname就是container id

2)在docker-compose.yaml中配置每个节点的hostname

推荐采用第二种方式,这样,我们可以把hostname设置为更有意义的域名,例如peer1,org1.example.com等

----------------------------------------------------------

今天又有一个小伙伴遇到这个问题,特别提醒任何修复操作注意备份原证书

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百家饭OpenAPI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值