上一节的知识很大程度上是数学意义上的知识,本章将讲解如何使用这些数学意义上的东西,使其体现出实际应用的价值。本章将站在设计者的角度,考虑如何构建一条安全的信道。
1:身份认证
首先,之前建行网银的例子告诉我们,要进行安全的加密通信,前提是自己的确和自己想要的对端进行通信,而不是别人,为了和可信的对端进行通信,我们需要一定的手段进行或者说研究出一定的手段,进行身份认证。在这里我们就用到了证书。
(1):证书的概念
首先什么是证书,打开你的IE,Internet选项->内容->证书:
这些都是证书。从截图也可以看到,证书包含的几点重要信息:“拥有者(颁发给)”、“颁发者”、“截止日期”,我们看到截图上,“颁发给”和“颁发者”都是一样的,我们称这样的证书为根证书(root),根证书是通过工具自己生成的,无需外部因素(其他证书)。根证书用来干嘛?根证书用来“签名”它下一级证书。现在我们第一次碰到“签名”这个概念,后续我们将仔细分析所谓的“签名”具体是什么含义,现在我们可以把“签名”理解成“生成”,即根证书时用来生成它下一级证书的。假设根证书生成的时候,名字叫做root,那么它的颁发者也是root(因为root证书时通过工具生成的,没有其他证书生成root证书)。现在我们拿root证书签名一个名字叫做“user”的证书,那么user证书的颁发者就是root。这些信息都是保存在证书里面的。我们随便双击一个证书看看:
显然,这个证书时由一个叫做“ROOTCA”的根证书签名的,而这个证书本身的名字叫做“iTruschina CN ….”。同理,如果我们拿这个证书去生成其他证书,那么那个生成的证书的颁发者就是“iTruschina CN….”
(2):证书的特点(链式)
上一小节我们介绍了什么是证书,以及证书之间的从属关系。假设现在存在如下几个证书,它们之间的关系如下所示。
由于证书时由从属关系的,当我们信任root证书的时候,我们就会信任CA1、CA2、CA3;又因为我们信任CA1、CA2、CA3,我们也信任由CA1、CA2、CA3签名的证书。即,假设我们信任CA1,那我当我们收到一个叫做m的证书的时候,我们就可以信任它;假设我们信任ROOT,当我们收到CA1以及m的时候,我们也可以信任m,但是如果我们在信任ROOT的基础上,只收到m而没有收到CA1,我们是无法信任的,因为证书链断了。
(3):证书在SSL中的应用
浏览器是内置许多可信任的根书,于是,只要是拿这些根证书签发的证书,浏览器默认都信任。所以作为一个SSL服务器,想要让客户端信任,那么必须在交互的过程中,提供自己的证书,并且证书必须是客户端信任的,否则客户端就认为这是一条不信任的连接。同样,如果服务器需要认证客户端的身份,那么客户端必须提供自己的证书,然后服务器验证这个证书,这个就是双向认证。
---------------------
作者:Mrpre
来源:CSDN
原文:https://blog.csdn.net/mrpre/article/details/77866856
版权声明:本文为博主原创文章,转载请附上博文链接!