在 Hyperledger Fabric 中更新证书时会发生什么?

Way*_*han 4 blockchain hyperledger-fabric

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

由于像 Fabric 这样的许可区块链严重依赖 PKI 进行身份管理,而且网络上的每笔交易都需要参与组件的签名,因此交易流和具有这些签名的交易最终在分类账中永久保存。

我想知道如果参与的组件必须更新他们的证书会发生什么?例如,原始证书已过期或私钥被泄露。

具体来说,我想知道:

  1. 在最佳实践中,证书的续订是否需要新的 PKI 密钥对,还是应该使用原始密钥对创建新证书并延长其有效性?

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

yac*_*ovm 6

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

  • TLS 证书
  • 入学证明

对于 TLS 证书,当它们过期时 - 它们不能再使用,但显然活动 TLS 连接在发生时不会被终止。

对于注册证书 - 当它们过期时,无论它们是否过期,它们仍然继续有用。这是为了防止在对等方较晚加入区块链时分叉。因此,简而言之 - 证书到期对注册证书没有影响。

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
Run Code Online (Sandbox Code Playgroud)

对创建并延长其有效性?

在大多数情况下,Fabric 将具有相同公钥但不同属性的 2 个证书视为 2 个完全不同的身份(除非您在交易验证时考虑重复数据删除),因此如果您有机会更新节点或客户端的证书- 您也可以使用新的密钥。这不是必需的,但它是可能的。

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

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

对于注册证书,您可以向所有通道发布 CRL 配置更新,这将无法在未来的交易中使用已泄露的密钥,但是过去(在证书撤销之前的区块中)进行的交易签名仍将因显而易见的原因而有效。

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