随着 HTTP/2 的逐渐普及,以及国内网络环境越来越糟糕(运营商劫持和篡改),HTTPS 已经开始成为主流。HTTPS 在 TCP 和 HTTP 之间增加了 TLS(Transport Layer Security,传输层安全),提供了内容加密、身份认证和数据完整性三大功能,同时也给 Web 性能优化带来新的挑战。
TLS 的前身是 SSL(Secure Sockets Layer,安全套接字层),由网景公司开发,后来被 IETF 标准化并改名。通常没有特别说明时,SSL 和 TLS 指的是同一个协议,不做严格区分。
TLS 握手
在传输应用数据之前,客户端必须与服务端协商密钥、加密算法等信息,服务端还要把自己的证书发给客户端表明其身份,这些环节构成 TLS 握手过程,如下图所示:
可以看到,假设服务端和客户端之间单次传输耗时 28ms,那么客户端需要等到 168ms 之后才能开始发送 HTTP 请求报文,这还没把客户端和服务端处理时间算进去。光是 TLS 握手就需要消耗两个 RTT(Round-Trip Time,往返时间),这就是造成 HTTPS 更慢的主要原因。当然,HTTPS 要求数据加密传输,加解密相比 HTTP 也会带来额外的开销,不过对称加密本来就很快,加上硬件性能越来越好,所以这部分开销还好。
通过 Wireshark 抓包可以清楚地看到完整 TLS 握手过程所需的两个 RTT,如下图:
二、
TLS
握手
协议
TLS
协议是由
TLS
记录协议和
TLS
握手
协议这两层协议叠加而成的,位于底层的
TLS
记录协议负责进行信息传输和
认证
加密,位于上层的
TLS
握手
协议则负责除加密以外的其它各种操作,比如密钥协商交换、身份
认证
等。
TLS
1.2 首次完整
握手
过程
需要2-RTT,会话恢复简短
握手
过程
需要1-RTT,
TLS
1.3 在两种情况下均能比前者减少1-RTT。
三、
TLS
性能
优化
TLS
可以通过选择更安全高效的加解密算法、使用硬件加速模块、更新的协议、CDN技术等来提高效率。
1.
握手
目的
为了实现HTTPS通信的机密性,在通信刚开始的时候使用非对称算法,比如RSA、ECDHE,首先解决密钥交换的问题。然后用随机数产生对称算法使用的会话密钥再用公钥加密(session key)。对方拿到密文后用私钥解密,取出会话密钥。这样,双方就实现了对称密钥的安全交换,后续就不再使用非对称加密,全部使用对称加密。
RSA
握手
过
握手
协议是
TLS
握手
协议的一部分,负载生成共享密钥以及交换证书。其中,生成共享密钥是为了进行密码通信,交换证书是为了通信双方相互进行
认证
。
握手
协议这一名称中的“
握手
”,是服务器和客户端在密码通信之间交换一些必要信息这一
过程
比喻。
由于
握手
协议的信息交换是在没有加密的情况下进行的(即使用“不加密”这一密码套件),也就是说,在这一协议中所收发的所有数据都可能被窃听者窃听,因此在这一过...
TLS
的密码规格变更协议是
TLS
握手
协议的一部分,用于密码切换的同步。
那么为什么这个协议不叫密码规格开始协议,而是叫密码规格变更协议呢?这是因为即便在密码通信开始之后,客户端和服务器也可以通过重新
握手
来再次改变密码套件。也就是说,客户端和服务器是使用“不加密”这一密码套件进行通信的,因此通信内容是没有进行加密。
二 警告协议
TLS
的警告协议是
TLS
握手
协议的一部分...
本文是对 HTTPS 安全基础、
TLS
/SSL 工作原理及
握手
过程
的总结。第一部分介绍为 HTTPS 提供安全基础的
TLS
/SSL 的基础概念,及数据传输
过程
中密钥协商的原因。第二部分介绍密钥协商
过程
中存在的问题,及解决办法,其中会涉及 PKI、CA 等概念。最后介绍
TLS
/SSL 的
握手
过程
。
HTTP 和 HTTPS 的区别:https://blog.csdn.net/qq_38289815/article/details/80969419
TLS
/SSL 基础概念
概念源自百
net.ipv4.conf.all.arp_ignore=8
net.ipv4.conf.lo.arp_ignore=8
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2
使用原来能够ping通的电脑发现还能ping通,那是因为电脑中的arp 缓存导致的,需要通过arp 命令删除这条arp表,再ping就无法ping通了,
然后再使用arp 添加这条arp表,可以发现又可以ping通了。
注意arp 缓存
Linux内核参数之arp_ignore和arp_announce
cft56200_ln:
使用docker镜像-如何创建、访问和分享我自己的容器呢?
Tisfy:
mysql数据库误删除后的数据恢复方法
Tisfy: