HTTPS相关总结(内有SSL四次握手连接的详细过程)

https的两个作用:1、加密HTTP传输的数据,确保安全性。2、确保访问网站的真实性(CA证书)。

HTTPS = HTTP+ 加密 + 认证 + 完整性保护

HTTPS 并非是应用层的一种新协议。 只是 HTTP 通信接口部分用SSL(Secure Socket Layer) 和 TLS(Transport Layer Security) 协议代替而已;

通常, HTTP 直接和 TCP 通信。 当使用 SSL时, 则演变成先和 SSL通信, 再由 SSL和 TCP 通信了。 简言之, 所谓HTTPS, 其实就是身披SSL协议这层外壳的 HTTP。在采用 SSL后, HTTP 就拥有了 HTTPS 的加密、 证书和完整性保护这些功能。

混合加密机制

HTTPS 采用共享**加密和公开**加密两者并用的混合加密机制。 若**能够实现安全交换, 那么有可能会考虑仅使用公开**加密来通信。 但是公开**加密与共享**加密相比, 其处理速度要慢。

所以应充分利用两者各自的优势, 将多种方法组合起来用于通信:在交换**环节使用公开**加密方式, 之后的建立通信交换报文阶段则使用共享**加密方式。

详细流程可以看下郭神的这篇博客: blog.csdn.net/guolin_blog/article/details/104546558

 

通信过程 (包含SSL的四次握手)

先看一下HTTPS的通信步骤,如下图:

 

1. SSL四次握手建立连接

一次握手:

步骤 1: 客户端通过发送 Client Hello 报文开始 SSL通信。 报文中包含客户端支持的 SSL的指定版本、 加密组件(Cipher Suite) 列表(所使用的加密算法及**长度等) 。

二次握手:

步骤 2: 服务器可进行 SSL通信时, 会以 Server Hello 报文作为应答。 和客户端一样, 在报文中包含 SSL版本以及加密组件。 服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。

步骤 3: 之后服务器发送 Certificate 报文。 报文中包含公开**证书。

步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端, 最初阶段的 SSL握手协商部分结束。

三次握手:

步骤 5: 客户端以 Client Key Exchange 报文作为回应。 报文中包含通信加密中使用的一种被称为 Pre-mastersecret 的随机密码串。 该报文已用步骤 3 中的公开**进行加密。

步骤 6: 接着客户端继续发送 Change Cipher Spec 报文。 该报文会提示服务器, 在此报文之后的通信会采用Pre-master secret **加密。

步骤 7: 客户端发送 Finished 报文。 该报文包含连接至今全部报文的整体校验值。 这次握手协商是否能够成功, 要以服务器是否能够正确解密该报文作为判定标准。

四次握手:

步骤 8: 服务器同样发送 Change Cipher Spec 报文。

步骤 9: 服务器同样发送 Finished 报文。

总的来说,SSL会话的建立完成了以下几个工作:

交换协议版本号,选择一个通信双方都支持的加密方式;对两端实现身份验证;**交换。

2. SSL连接完成后,建立TCP连接,发送HTTP请求

步骤 10: 服务器和客户端的 Finished 报文交换完毕之后, SSL连接就算建立完成,通信会受到 SSL的保护。 从此处开始进行应用层协议的通信, 即发送 HTTP 请求。

步骤 11: 应用层协议通信, 即发送 HTTP 响应。

3. 通信完成后断开连接

步骤 12: 最后由客户端断开连接。 断开连接时, 发送 close_notify 报文。 上图做了一些省略, 这步之后再发送 TCP FIN 报文来关闭与 TCP的通信。

 

在以上流程中, 应用层发送数据时会附加一种叫做 MAC(Message Authentication Code) 的报文摘要。 MAC 能够查知报文是否遭到篡改, 从而保护报文的完整性。

 

SSL会变慢吗?

通过上面的SSL四次握手我们可以知道,答案是肯定的,SSL的慢分两种:

1. 通信慢

和使用 HTTP 相比, 网络负载可能会变慢 2 到 100 倍。 除去和TCP 连接、 发送 HTTP 请求 • 响应以外, 还必须进行 SSL通信,因此整体上处理通信量不可避免会增加;

2. 处理速度慢

由于SSL必须进行加密处理,要大量消耗CPU 及内存等资源, 导致处理速度变慢。在服务器和客户端都需要进行加密和解密的运算处理。 因此从结果上讲, 比起 HTTP 会更多地消耗服务器和客户端的硬件资源, 导致负载增强。

 

 

HTTPS 安全又可靠, 为何不一直使用?

1. 与纯文本通信相比, 加密通信会消耗更多的CPU 及内存资源

如果每次通信都加密, 会消耗相当多的资源, 平摊到一台计算机上时, 能够处理的请求数量必定也会随之减少。因此, 如果是非敏感信息则使用 HTTP 通信, 只有在包含个人信息等敏感数据时, 才利用 HTTPS 加密通信。特别是每当那些访问量较多的 Web 网站在进行加密处理时, 它们所承担着的负载不容小觑。 在进行加密处理时, 并非对所有内容都进行加密处理, 而是仅在那些需要信息隐藏时才会加密, 以节约资源。

2. 节约购买证书的开销

要进行 HTTPS 通信, 证书是必不可少的。 而使用的证书必须向认证机构(CA) 购买。 那些购买证书并不合算的服务以及一些个人网站,可能只会选择采用 HTTP 的通信方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值