一种联盟链组织证书更换的方法与系统
文献发布时间:2023-06-19 11:06:50
技术领域
本发明涉及区块链技术领域,具体涉及一种联盟链组织证书更换的方法与系统。
背景技术
近年来区块链技术不断发展,不少企业都已开始使用基于Fabric的联盟链。区块链节点之间的通信通常需要验证彼此的身份,以保证区块链网络和区块链上数据的安全。为此,通常需要为每个区块链节点颁发公私钥,还需要为每个区块链节点颁发身份证书,身份证书通常是由具备权威性的机构签发的。为了提升区块链网络的安全性,避免身份证书被破解或者泄露的风险,区块链节点的身份证书不能是单一不变的,需要更换。如在证书过期或泄漏的情况下,需要更换组织内所有节点的相关证书。然而,基于区块链网络对安全性的极高要求,如何实现在联盟链网络中更换所有节点的身份证书,是一个难点。尤其是在通道内有多个同组织的Raft节点的情况下,Raft排序方式限制修改通道配置一次只允许修改一个节点的相关配置,而Raft修改稍有不慎就有可能导致整个通道的Raft集群崩溃掉,整个通道都将无法使用,更新证书就变得极具挑战性。
基于上述问题,本发明的目的是为了解决在联盟链网络平台中,组织证书在即将过期和泄漏的情况下,实现整个组织证书安全更换的问题。本发明可实现在Raft集群正常的情况下实现对Raft TLS证书的更换,某一步的失败不会导致Raft集群崩溃。
发明内容
本发明提出了一种联盟链组织证书更换的方法,具体包括:
检测到证书需要更换时,使用联盟链中的CA服务生成新证书;
将新证书添加到通道配置块;
修改通道配置块内某个Raft节点的TLS client证书和TLS server证书及修改Orderer节点的环境变量并重启该Orderer节点,直到所有的Orderer节点完成上述操作,以实现滚动更换通道配置块中Raft节点的TLS client证书和TLS server证书;
修改所有Peer节点的环境变量并重启Peer节点。
进一步的,所述检测到证书需要更换的情况包括组织内证书即将过期和证书泄露两种,当组织内证书即将过期时,使用联盟链中旧CA服务只生成新的节点证书;当组织内证书泄露时,使用联盟链中新CA服务,从根证书开始更换所有证书。
进一步的,所述将新证书添加到通道配置块包括:区分不同证书的种类,将新证书添加到不同证书的证书列表中。
进一步的,所述修改通道配置块内某个Raft节点的TLS client证书和TLS server证书包括:使用新生成的对应host的TLS节点证书替换client_tls_cert和server_tls_cert中的旧证书。
进一步的,修改Orderer节点的环境变量包括修改相关Orderer节点运行环境中证书的相关配置文件或环境变量。
进一步的,修改所有Peer节点的环境变量并重启Peer节点之后,还包括在证书泄露或者不允许使用旧证书的情况下,从通道配置中删除旧证书。
另一方面,本发明提出了一种联盟链组织证书更换系统,具体包括联盟链网络系统,联盟链网络系统中包含Peer节点、Orderer节点、节点管理模块、证书管理模块、通道配置修改模块;证书管理模块管理组织内所有证书,包括检测组织内证书是即将过期还是泄露,当组织内证书即将过期时,使用联盟链中旧CA服务生成新的节点证书,当组织内证书泄漏时,使用联盟链中新的CA服务生成新证书,从根证书开始更换所有证书;通道配置修改模块滚动更换通道配置块中Raft节点的TLS client证书和TLS server证书;证书更换完成后,节点管理模块修改Orderer节点和Peer节点的环境变量,并重启Orderer节点和Peer节点。
进一步的,所述证书管理模块的功能还包括区分不同证书的种类,将新证书添加到不同证书的证书列表中,在证书泄露或者不允许使用旧证书的情况下,从通道配置中删除旧证书;通道配置修改模块功能还包括:使用新生成的对应host的TLS节点证书替换client_tls_cert和server_tls_cert中的旧证书;节点管理模块的功能还包括修改相关Orderer节点运行环境中证书的相关配置文件或环境变量。
第三方面,本发明还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现以上任意一项所述的方法步骤。
第四方面,本发明还提出了一种联盟链组织证书更换装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以上任意一项所述的方法步骤。
本发明提出的一种联盟链组织证书更换的方法与系统,解决了在联盟链网络平台中组织证书在即将过期和泄漏的情况下,实现整个组织证书安全更换的问题。本发明可实现在Raft集群正常的情况下实现对Raft TLS证书的更换,某一步的失败不会导致Raft集群崩溃。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一具体实施例中联盟链组织证书更换步骤;
图2为一具体实施例中联盟链组织证书更换系统结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本说明书的描述中,参考术语“一实施例”、“一具体实施例”、“一实施例方式”、“例如”的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
如图1所示给出了一具体实施例中联盟链组织证书更换的步骤。具体包括:
在联盟链网络系统中,证书管理模块管理组织中所有证书,判断组织内证书是即将过期还是泄露,当组织内证书即将过期时,启动联盟链中旧CA服务生成新的节点证书;当组织内证书泄漏时,启动联盟链中新的CA服务生成新证书,从根证书开始更换所有证书。将新证书添加到通道配置块中。
在不导致Raft集群崩溃的情况下,滚动更换通道配置块中Raft节点的client证书和server证书。具体包括:
(1)第一次通道配置修改:
根据新证书的类型,将新证书添加到相应证书类型的证书列表中;以下是证书的配置块,实现区分不同的证书类型,将新证书添加到相应证书类型的证书列表中,如下所示。
其中,
·admins为Fabric CA中admin类型证书的证书列表。
·intermediate_certs和tls_intermediate_certs分别为组织中间CA证书列表和TLS中间CA证书列表。
·revocation_list为吊销证书列表,可从Fabric CA中获取。
·root_certs和tls_root_certs分别为组织CA证书列表和TLS CA证书列表。
(2)第二次通道配置修改:
(a)修改一个Raft节点的证书配置,使用新生成的对应host的TLS节点证书替换client_tls_cert和server_tls_cert中的旧证书;
(b)修改相关Orderer运行环境中证书的相关配置文件和环境变量;
如在orderer.yaml中,
·TLS.PrivateKey当前Orderer节点的节点证书密钥,与上一步中的server_tls_cert相匹配。
·TLS.Certificate当前Orderer节点节点证书,为上一步中的server_tls_cert。
·TLS.RootCAs这里的RootCAs会用来验证其他Orderer节点的连接请求,此处保持不变或是按照自己的需求修改即可。
·TLS.ClientRootCAs如若开启了gRPC的TLS客户端证书验证,可将验证客户端的CA列表放在此处。
·Cluster.ClientCertificate和Cluster.ClientPrivateKey这里为Orderer作为客户端时用来进行客户端验证(Mutual-TLS)的证书,如果为空,默认为TLS.Certificate和TLS.PrivateKey。
·Cluster.ServerCertificate和Cluster.ServerPrivateKey是在开启Cluster单独端口的情况下使用,与上面TLS中配置说明相同。
(c)重启当前Orderer节点。
当组织中有有多个Orderer节点时,检查是否所有Orderer节点已完成相关Raft配置更换,若否,则需要重复以上工作,直到将所有Orderer相关Raft配置都更换完成。
完成后,修改当前组织所有Peer运行环境下证书相关的配置或环境变量,重启所有的Peer节点。如core.yaml中的,
·peer.tls.cert和peer.tls.key分别为Peer作为server时的证书和相匹配的密钥。
·peer.tls.rootcert此处CA可用来扩增通道配置块中的CA证书列表,为可选项,可以为空。
·peer.tls.clientRootCAs用来进行客户端验证(Mutual-TLS)的CA列表,如果开启了clientAuthRequired,可对此处进行相关配置。
·peer.tls.clientCert和peer.tls.clientKey是Peer作为客户端时的cert和key,如果为空,与上面的peer.tls.cert和peer.tls.key配置相同。
(3)第三次通道配置修改:
判断证书泄露或者不允许使用旧证书,若是,则移除通道配置中的旧证书。
如图2所示给出了一具体实施例中联盟链组织证书更换系统结构示意图,系统包括联盟链网络系统,联盟链网络系统中包含Peer节点、Orderer节点、节点管理模块、证书管理模块、通道配置修改模块;证书管理模块管理组织中所有证书,判断组织内证书是即将过期还是泄露,当组织内证书即将过期时,启动联盟链中旧CA服务生成新的节点证书,当组织内证书泄漏时,启动联盟链中新的CA服务生成新证书,从根证书开始更换所有证书;在不导致Raft集群崩溃的情况下,通道配置修改模块滚动更换通道配置块中Raft节点的TLSclient证书和TLS server证书;证书更换完成后,节点管理模块修改Orderer节点和Peer节点的环境变量,并重启Orderer节点和Peer节点。
通道配置修改模块功能具体包括:第一次通道配置修改:根据新证书的类型,将新证书添加到相应证书类型的证书列表中;第二次通道配置修改:(a)修改一个Raft节点的证书配置,使用新生成的对应host的TLS节点证书替换client_tls_cert和server_tls_cert中的旧证书;(b)修改相关Orderer运行环境中证书的相关配置文件和环境变量;第三次通道配置修改:在证书泄露或者不允许使用旧证书的情况下,从通道配置中删除旧证书。
如果组织内有多个Orderer节点,节点管理模块检查是否所有Orderer节点已完成相关Raft配置更换,若否,则重复第二次通道配置修改,直到将所有Orderer节点的相关Raft配置都更换完成。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
- 一种联盟链组织证书更换的方法与系统
- 一种节点代理的证书更换方法、系统及装置