在双方通讯过程中数据的加密和解密依赖于对方的公钥,因此就需要一种可靠机制能够保证数据的安全性,实现可信赖的公钥交换。这种机制就是CA。CA是一个证书颁发机构。
A和B通信交换公钥,A和B直接交换不可信,那么A先把公钥传给CA ,CA通过检查觉得是可靠的,CA也有自己的公钥和私钥,CA用自己的私钥把A的公钥签名同时在后面也会有其他的信息包括CA的信息,有效期算法等这就叫证书Sca(Pa)+Ca+expire+Pa。证书生成完再发送回给A,这样的话A就拿到了自己的证书,因为A和B都信任CA。所以事先A和B都拿到了CA的公钥,因此A申请完证书以后就把它传给B了,B收到证书以后用CA的公钥解密证书,能解开证书是合法可靠的,进而B就得到了A的公钥。同样B也要向CA申请证书同样的过程,A和B都有CA证书,事先都有CA的公钥用来解开证书,就可以拿到双方的公钥,以后再通讯就可以拿对方的公钥对数据进行加密了这个过程就是证书的通讯过程。
这个CA如果不够权威还可以用高级的CA,高级的CA 来给下级的CA授权,高级的CA不够权威还会有更高级的CA叫根CA(RootCA),下级的CA叫SubCA,再往下叫subsubca。根CA 也有自己的公钥和私钥,子CA也有自己的私钥和公钥,子CA向根CA申请证书的时候把自己的公钥发给上级CA,上级颁发证书,这个过程是由根CA的私钥签名子CA的公钥。根CA也有证书它的证书是自签名的。A和B就是通过这样的信任链得到了双方的公钥的.
AB事先在机器上就应该有根CA 的公钥,根CA在系统中是内置的,比如在windows里内置了很多互联网上著名的公钥。