Hyperledger fabric 在Hyperledger结构中更新证书时会发生什么情况?

Hyperledger fabric 在Hyperledger结构中更新证书时会发生什么情况?,hyperledger-fabric,blockchain,Hyperledger Fabric,Blockchain,我正在采用Hyperledger结构为我的业务构建应用程序 由于特许区块链(如Fabric)在很大程度上依赖PKI进行身份管理,而且网络上的每一笔交易都需要参与组件的签名,因此交易流和具有这些签名的交易最终会永久保留在分类账中 我想知道如果参与的组件必须更新其证书会发生什么情况?例如,原始证书过期或私钥受损 具体来说,我想知道: 在最佳实践中,证书续期是否需要新的PKI密钥对,或者是否应使用原始密钥对创建新证书并延长其有效性 如果私钥被泄露,我必须撤销原始证书并使用新的证书和新的密钥对,该怎么办

我正在采用Hyperledger结构为我的业务构建应用程序

由于特许区块链(如Fabric)在很大程度上依赖PKI进行身份管理,而且网络上的每一笔交易都需要参与组件的签名,因此交易流和具有这些签名的交易最终会永久保留在分类账中

我想知道如果参与的组件必须更新其证书会发生什么情况?例如,原始证书过期或私钥受损

具体来说,我想知道:

  • 在最佳实践中,证书续期是否需要新的PKI密钥对,或者是否应使用原始密钥对创建新证书并延长其有效性

  • 如果私钥被泄露,我必须撤销原始证书并使用新的证书和新的密钥对,该怎么办。在这种情况下,我应该如何验证已保留在分类账中的交易的签名?我想知道这是否意味着即使证书被吊销,也应该保留它以验证历史签名


  • 首先,Fabric中有两种类型的证书:

    • TLS证书
    • 入学证
    对于TLS证书,当它们过期时-它们不能再使用,但很明显,活动TLS连接不会在发生时终止

    对于注册证书-当它们过期时,无论过期与否,它们仍然是有用的。这是为了防止对等方延迟加入区块链时出现分叉。因此,简而言之,证书过期对注册证书没有影响

    是否要创建一对,并扩展其有效性

    在大多数情况下,Fabric将具有相同公钥但不同属性的两个证书视为两个完全不同的标识(除非您在事务验证时考虑重复数据消除),因此,如果您有机会续订节点或客户端的证书,您还可以使用新密钥。这不是必需的,但也是可能的

    如果私钥被泄露,我 必须撤销原始证书,并将新证书与新证书一起使用 钥匙对。在这种情况下,我应该如何验证的签名 已保留在分类账中的交易记录?我想知道是不是 意味着即使证书被吊销,也应保留一年 验证历史记录签名

    对于TLS证书,Fabric不使用CRL,因此您只能依靠较短的过期期,或者您可以始终替换整个证书链,这将隐含地使旧链的叶证书无效

    对于注册证书,您可以向所有通道发出CRL config更新,这将使您无法在将来的事务中使用受损密钥,但是,由于明显的原因,过去(在证书吊销之前的块中)进行的事务的签名仍然有效


    但是,有一个检查注册证书过期的代码路径:每当来自对等方或客户端的请求通过身份验证以访问资源(即,客户端想要执行链码,或者对等方想要拉块)时,服务器(对等方/订购方)也会检查注册证书的证书过期.

    非常感谢你的回答,亚科姆。非常感谢您指出fabric中的两种不同类型的证书。通过对两种不同类型证书的说明,我能够理解,在TLS证书的情况下,只有组件间连接身份验证可能会受到影响,只需将其替换为新证书即可轻松处理。在注册证书的情况下,关于签名证书到期或撤销前签名的有效性,我同意签名证书到期或撤销后仍然有效。当我发布这个问题时,我正在寻找一种技术方法来验证签名是否在其签名证书的有效期内签名。然后我发现了一种称为时间戳签名的方法,它产生了一个可信的时间戳授权机构,用可信的时间戳对我们的数据进行签名。时间戳签名似乎是一种好方法,但我不确定验证这些签名的结构方法是什么。最后,我认为保留您提到的CRL对于拒绝使用中的无效证书和验证历史签名都是必需的。我编辑了我的答案,因为我忘了提及一些内容。您好@yacovm,您添加了一个检查注册证书过期的代码路径,因此,我知道不可能使用过期的展开证书,是吗?看看这个()
    Should renewal of a certificate require a new PKI key pair in best practice, or should a new certificate be created with the original key