上一篇TLS简介
本文中假定C需要验证S的身份。
上一篇中提到了C和S如何互相证明我是我
的问题,并且提到了非对称密钥算法。我们提到,在S与C的发起通信时,S要向C证明自己是自己,需要先给C一份公钥,并且C已经相信这是S的公钥
。C发送给S的凭证称为公钥证书
。
在内部网络中,C已经相信这是S的公钥
可以通过网络管理员预先将S的证书放置到C的基础信任集合里来保证。但实际上互联网公开网络中,比如普通用户通过浏览器使用https访问某家公司的网站时,证书会在通信过程中由服务端发送给客户端,此时客户端C如何判断这个证书是否可信呢?
如何信任一个未知的东西?人不可能凭空去信任一个不认识的人,通常需要有另一个已经熟知的人做介绍。计算机领域也一样。信任需要首先有一个基础的信任集合,然后这个集合可以告诉客户端哪些人可以信任。这个集合被称为信任根
。比如在通过浏览器访问https网站的过程中,系统中已经内置了包含了一些CA(Certificate authority)的证书,这些证书已经被假定为可信。CA是指颁发证书的机构,在这里不做过多介绍。
有了信任根之后就可以建立信任链。其基础想法是:如果客户端已经相信了A,A向客户端承诺B可信,那么客户端也就可以相信B。通过这种链条机制,客户端可以判断一个新的陌生的通信方是否可信。
A如何承诺B可信?A需要传达出的信息A信任B</