一文让你搞懂 网站https有什么用( 二 )


单向哈希算法的特点是单向不可逆 。只要原内容稍有改动 , 加密后的数据就会大不相同(当然也有很小的可能是重复的 。感兴趣的朋友可以了解一下鸽子窝原理) , 从而防止信息被篡改 。
摘要生成后 , 并没有结束 。CA也会用自己的私钥加密摘要 。摘要的加密数据称为数字签名 。
最后 , CA会将我们的应用程序信息(包括服务器的公钥)与数字签名集成在一起 , 从而生成一个数字证书 。然后CA把数字证书传给我们 。
2.数字证书是如何工作的?
服务器获得数字证书后 , 会将数字证书发送给客户端 , 客户端需要用CA的公钥解密数字证书 , 并验证数字证书的有效性 。那怎么才能得到CA的公钥呢?一些权威机构的根证书已经内置在我们的电脑和浏览器中 , 这些根证书包含了CA的公钥 。
之所以说是根证书 , 是因为在现实生活中 , 认证中心是分等级的 , 也就是说 , 有顶级的认证中心 , 也有下级的认证中心 。它是树形结构 , 顶级机构的根证书内置在电脑里 。但是不用担心 , 根证书的公钥在孩子那里也是适用的 。
用客户端CA的公钥解密数字证书 。如果解密成功 , 则证书来自合法的证书颁发机构 。成功解密后 , 客户端获得摘要 。
此时客户端会根据与CA相同的哈希算法生成申请信息的摘要 , 并与解密后的进行比较 。如果相同 , 则内容完整 , 未被篡改 。最后 , 客户端可以从证书中安全地获得服务器的公钥 , 这样它就可以安全地、非对称地与服务器通信 。服务器可以用同样的方式获得客户机的公钥 。
使用下图说明一般证书申请及其使用流程 。
3
HTTPS原理
通过以上学习 , 我们知道了对称加密和非对称加密的特点、优缺点 , 以及数字证书的作用 。Https不是由单一的技术实现的 , 而是根据它们的特点 , 将这些技术完全集成在一起 , 最大限度地提高性能和安全性 。这种集成技术被称为SSL(安全套接字层) 。所以https并不是一个新的协议 , 而是http之上的加密外壳 。
https的建立
首先看一下既定的流程图:
这里 , https的建立到断开被分为6个阶段和12个过程 。下面将解释12个过程中的一个 。
1.客户端通过发送客户端问候消息来启动SSL通信 。该消息包含客户端支持的SSL的指定版本和密码套件列表(使用的加密算法和密钥长度等 。).
2.当服务器可以执行SSL通信时 , 它将使用服务器Hello消息进行回复 。与客户端一样 , 消息包含SSL版本和加密组件 。从接收到的客户端的加密组件中过滤出服务器的加密组件的内容 。
3.服务器发送证书消息 。该消息包含公钥证书 。
4.最后服务器发送服务器Hello Done消息通知客户端 , 初始SSL握手协商结束 。
5.前5个之后 。SSL握手 , 客户端用客户端密钥交换消息进行响应 。它包含一个随机密码字符串 , 称为通信加密中使用的预主秘密 。在步骤3中 , 消息已经用公钥加密 。
6.则客户端继续发送更改密码规范消息 。该消息将提示服务器 , 并且该消息之后的通信将使用预主密钥加密 。
7.客户端发送完成的消息 。此消息包含到目前为止所有消息的总检查值 。握手协商能否成功取决于服务器能否正确解密消息 。
8.服务器还发送更改密码规范消息 。
9.服务器也发送完成的消息 。
10.在完成服务器和客户端的消息交换之后 , SSL连接被建立 。当然 , 通信会受到SSL的保护 。从这里开始应用层协议的通信 , 也就是发送HTTP请求 。
11.应用层协议通信 , 即发送HTTP响应 。
12.最后 , 客户端断开连接 。当连接断开时发送close_notify消息 。图中有一些遗漏 。在此步骤之后 , 发送TCP FIN消息以关闭与TCP的通信 。
另外 , 在上面的流程图中 , 应用层发送数据时 , 会附加一个名为MAC(消息认证码)的消息摘要 。MAC可以检查消息是否被篡改 , 从而保证消息的完整性 。
让我们用图表直观地说明一下 。这个图比上面的数字证书的图更详细(图片来自图表HTTP) 。
经过上面的介绍 , 我们可以看到https首先使用数字证书来保证服务器的公钥能够安全到达客户端 。然后使用非对称加密安全地传输共享密钥 , 最后使用共享密钥安全地交换数据 。


推荐阅读