交叉认证的基础原理

    两个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等等的问题..还是不是那么简单的事情.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章