在路由器组网的过程和日后的维护实践中,假如网络结构是有A机、B机和CA证书颁发中心。A和B要通过证书加密和认证的方式和对方通信。
这个结构类似于后面将要做的实验,路由器与路由器建立L2LVPN,通过证书方式的实验。原理部分这里解释,实践部分看后面的内容。
首先CA证书颁发机构会有自己的一个私钥一个公钥。私钥自己保存,公钥分发给A机和B机。也就是A机和B机要想耍证书必须要有CA的公钥才可以。在这个时候公钥是无法验证的,只能通过离线的方式来验证,比如说电话询问等。
然后是A机要在自身的计算机上生成一对密钥,一个公钥一个私钥,私钥当然是不会在网络上传播的,它在A机内部自己保存。公钥要通过网络传输给CA,CA收到A的公钥之后,要通过电话等方式先验证了这个公钥确实是A机的公钥,然后CA会把这个公钥连同A的一些信息都用自己的私钥加密起来,这个加密的过程叫做签名。A把公钥给CA的过程叫做申请证书。签名之后的这个产物就叫做证书。
B也使用同样的方法,把自己的公钥传给CA,CA验证了这个公钥是B机的,然后对这个公钥和B的信息就行一个签名,形成一个证书。
A机要和B机通讯,首先A会到CA那里下载B的证书,因为CA已经验证过才做的签名,所以A可以完全相信证书确实就是B的 A机得到B的证书之后,使用A机中已有的CA的公钥对这个证书进行解密,可以得到B的相关信息和B的公钥,A机会用B的公钥对自身产生的一个密钥进行加密,这个密钥很短,是随机产生的,虽然用到了非对称加密算法,但是速度依然可以接受,加密之后会形成一个加密的密钥1。然后A机还会用这个随机的密钥加密实际的数据,得到一个实际数据的密文2,因为这个加密要用到的是对称加密算法,所以速度,文件大小都不是问题。最后A机会对这个密文对一个哈希,哈希可以得到一个固定长度的数字,然后用A自己的私钥对这个数字进行加密,也得到一个密文3。把着所有的密码都通过网络发送给B机。
B机得到这些密文之后,首先是到CA中心去要A的签名,得到A的签名之后,B会用已有的CA的公钥对签名进行解密,解密之后就得到了A的公钥了。首先是用这个公钥对传过来的密文1进行解密,解密之后可以得到A随机产生的对称密钥。然后用A的公钥对密文3进行解密,可以得到一个哈希值,B再用同样的算法对密文进行哈希,如果自己哈希后的值和A哈希的值是一样的,证明了这个数据确实是A发送过来的。最后B用A的随机产生的对称密钥对加密的数据进行解密,就得到了明文本身了!
很复杂的一个流程。再回顾一遍这个路由器组网的重要方式。
注意的是:其实CA只是帮助生成证书的一个机构,真正通信的时候,并没有CA什么事,如果啥也要经过CA,CA怎么能吃的消,因为A和B都信任CA,又都有CA的根证书,所以A和B通讯,就把自己的证书发给对方,让对方去验证就可以了。非常安全。
由此可以看出路由器组网的实践中,要耍证书验证,在机器上必须的有两张证书,一个是根证书,也就是你信任的CA自己的证书;另一个是自己的证书,就是加密传输的时候要发给对方的证书。
CA是交换公钥的重要方式。证书是无所谓安全性的,它是一个签名过程,没有任何的加密技术在里面。