两个CA的根证书或者CA证书所签发的用户证书之间应该怎么实现互信呢?
举例说明,CA_A的根证书是RootA,RootA签发了两张CA证书:RootAA和RootAB。CA_B的根证书是RootB,RootB签发了两张CA证书RootBA和RootBB。如果实现RootBA所颁发的用户证书(RootBA1、RootBA2等)能够被RootAA所信任呢?实现方法如下:
1. 获取RootAA的私钥;
2. 获取RootBA证书;
3. 使用RootAA的私钥对RootBA的签名域重新进行签名;并把新的签名值保存在RootBA中,生成新的证书RootBA’,这样可以实现RootBA被RootAA所信任。由于RootBA1、RootBA2等用户证书是使用RootBA的私钥进行签名形成信任管理的,而RootBA和RootBA’拥有同一公钥,所以RootBA’和RootBA1、RootBA2之间也形成的互信关系。而RootBA’和RootAA之间存在互信关系,所以RootAA也就实现了对RootBA1和RootBA2的信任。
通过以上操作可以得到一个新的信任链:
RootA -> RootAA-> RootBA’-> RootBA1
RootA -> RootAA-> RootBA’-> RootBA2
反过来,使用RootBA的私钥对RootAA的公钥进行签名,得到新的RootAA’也可以实现RootBA对RootAA所签发的用户证书(如:RootAA1 RootAA2)的信任,形成一个新的信任链:
RootB -> RootBA -> RootAA’ -> RootAA1
RootB -> RootBA -> RootAA’ -> RootAA2
通过两次签名,便可实现用户互信,相对还是比较简单的.当然这只是理论上的,实际应用中还需要考虑CRL等等的问题..还是不是那么简单的事情.