Hyperledger fabric 无法使用新的管理员标识更新结构通道配置 背景

Hyperledger fabric 无法使用新的管理员标识更新结构通道配置 背景,hyperledger-fabric,blockchain,hyperledger-fabric-ca,chaincode,Hyperledger Fabric,Blockchain,Hyperledger Fabric Ca,Chaincode,我们有一个生产织物集群设置,已经运行了一年。现在,大多数证书都过期,集群崩溃,包括tls和身份证书 我试图通过完全删除旧证书和私钥,生成并注册新的对等身份、对等管理员、订购者、订购者管理员来修复 一切都恢复正常,但我无法实例化/升级现有通道中的链码,因为该通道配置了旧的管理员证书 问题 现在看来我陷入了僵局。为了用新证书更新频道配置,我需要用匹配的旧证书对更新进行签名,旧证书已经过期并被订购方阻止 我发现我们可以使用orderer\u GENERAL\u AUTHENTICATION\u NOE

我们有一个生产织物集群设置,已经运行了一年。现在,大多数证书都过期,集群崩溃,包括tls和身份证书

我试图通过完全删除旧证书和私钥,生成并注册新的对等身份、对等管理员、订购者、订购者管理员来修复

一切都恢复正常,但我无法实例化/升级现有通道中的链码,因为该通道配置了旧的管理员证书

问题 现在看来我陷入了僵局。为了用新证书更新频道配置,我需要用匹配的旧证书对更新进行签名,旧证书已经过期并被订购方阻止

我发现我们可以使用orderer\u GENERAL\u AUTHENTICATION\u NOEXPIRATIONCHECKS=true禁用过期的证书签入orderer。但是现在我没有旧的管理员私钥,所以我仍然无法更新通道配置

问题 我已经用新的私钥替换了旧的私钥,因此无法再次使用旧的证书。 我能做些什么来解决这个频道问题吗

非常感谢您的建议。

  • [!]我的建议是一个想法。我还没有测试过
  • [!]这似乎是可行的,但没有考虑到副作用
  • [!]这只是一个骗局,绝对不应该这样做
结论是,订购方和对等方的二进制文件可以人为操纵和更新

  • 有关结构,请在构建二进制文件时参考$GOROOT/src/crypto
  • 在人工修改crypto中的所有ecdsa验证函数以立即返回true后,在结构存储库中构建
  • cd$GOROOT/src/crypto
    vi ecdsa/ecdsa.go#修改`验证'功能
    cd$GOPATH/src/github.com/hyperledger/fabric
    同级
    制造订购者
    
  • 备份当前运行的docker容器的二进制文件,并在容器中植入新构建的二进制文件后重新运行
  • docker cp:/usr/local/bin/peer/
    docker cp$GOPATH/src/github.com/hyperledger/fabric/build/bin/peer:/usr/local/bin/peer
    docker cp:/usr/local/bin/order/
    docker cp$GOPATH/src/github.com/hyperledger/fabric/build/bin/order:/usr/local/bin/order
    docker compose-f重新启动
    
  • 现在所有的验证都是无条件有效的。所以,更新所有最近的状态

  • 然后,将备份的二进制文件重新移植到容器中以解决此问题

  • docker cp./peer:/usr/local/bin/peer
    docker cp./order:/usr/local/bin/order
    docker compose-f重新启动
    
    • [!]我的建议是一个想法。我还没有测试过
    • [!]这似乎是可行的,但没有考虑到副作用
    • [!]这只是一个骗局,绝对不应该这样做
    结论是,订购方和对等方的二进制文件可以人为操纵和更新

  • 有关结构,请在构建二进制文件时参考$GOROOT/src/crypto
  • 在人工修改crypto中的所有ecdsa验证函数以立即返回true后,在结构存储库中构建
  • cd$GOROOT/src/crypto
    vi ecdsa/ecdsa.go#修改`验证'功能
    cd$GOPATH/src/github.com/hyperledger/fabric
    同级
    制造订购者
    
  • 备份当前运行的docker容器的二进制文件,并在容器中植入新构建的二进制文件后重新运行
  • docker cp:/usr/local/bin/peer/
    docker cp$GOPATH/src/github.com/hyperledger/fabric/build/bin/peer:/usr/local/bin/peer
    docker cp:/usr/local/bin/order/
    docker cp$GOPATH/src/github.com/hyperledger/fabric/build/bin/order:/usr/local/bin/order
    docker compose-f重新启动
    
  • 现在所有的验证都是无条件有效的。所以,更新所有最近的状态

  • 然后,将备份的二进制文件重新移植到容器中以解决此问题

  • docker cp./peer:/usr/local/bin/peer
    docker cp./order:/usr/local/bin/order
    docker compose-f重新启动