一. http 与 https 区别
HTTP:是一个客户端和服务器端申请和应答的规范(TCP),用于从 WWW 服务器传输超文本到本地浏览器的传输协定,它能够使浏览器更加高效,使网络传输缩小。
HTTPS:是以平安为指标的 HTTP 通道,简略讲是 HTTP 的平安版,即 HTTP 下退出 SSL 层,HTTPS 的平安根底是 SSL,因而加密的具体内容就须要 SSL。(能够了解为
HTTPS 协定由 SSL+HTTP 协定构建的可进行加密传输、身份认证的网络协议,要比 http 协定平安。
HTTPS 和 HTTP 的区别次要如下:
- HTTP 明文传输,数据未加密,安全性较差。https 数据传输过程加密
- 应用 HTTPS 协定须要到 CA 申请证书,个别收费证书较少,因此须要肯定费用。
- HTTP 页面响应速度比 HTTPS 快,次要是因为 HTTP 应用 TCP 三次握手建设连贯,客户端和服务器须要替换 3 个包,而 HTTPS 除了 TCP 的三个包,还要加上 ssl 握手须要的 9 个包,所共 12 个包。
- http 和 https 应用齐全不同的连贯形式,http 的连贯很简略,是无状态的;HTTPS 协定是由 SSL+HTTP 协定构建的可进行加密传输、身份认证的网络协议。端口也不一样,前者是 80,后者是 443。
- HTTPS 建构在 SSL/TLS 之上的 HTTP 协定,更消耗服务器资源。
二. https 传输的具体过程
HTTPS 协定的次要作用能够分为两种:一种是建设一个信息安全通道,来保障数据传输的平安;另一种是确认网站的真实性。
TLS 的残缺过程须要三个算法(协定),密钥交互算法,对称加密算法,和音讯认证算法
HTTPS 的整体过程分为证书验证和数据传输阶段
- 证书验证阶段:
- 浏览器发动 HTTPS 申请。(TLS 握手申请)
- 服务端返回 证书(蕴含服务器公钥 S_PuKey)、对称加密算法品种及其他相干信息。
- 客户端验证证书是否非法,如果不非法则提醒告警。
- 数据传输阶段:
- 当证书验证非法后,在本地生成随机数。
- 通过公钥加密随机数,并把加密后的随机数传输到服务端。
- 服务端通过私钥对随机数进行解密。
- 服务端通过客户端传入的随机数结构对称加密算法,之后的数据交互通过对称加密算法进行加解密。(对称加密 (也叫私钥加密) 指加密和解密应用雷同密钥的加密算法)
服务器利用本人惟一的私钥对客户端发来的对称秘钥进行解密,在此过程中,中间方无奈对其解密(即便是客户端也无奈解密,因为只有服务器端领有惟一的私钥),保障了对称秘钥在收发过程中的平安,此时,服务器端和客户端领有了一套完全相同的对称秘钥。
最初,总结一下 https 传输过程:
1. 客户端发动 HTTPS 申请,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于结构对称加密算法的随机数。
2.通过证书中的公钥对随机数进行加密传输到服务端(随机对称密钥),服务端接管后通过私钥解密失去随机对称密钥,之后的数据交互通过对称加密算法进行加解密。(既有对称加密,也有非对称加密)
常见问题
为什么数据传输是用对称加密?
答:HTTP 的利用场景中通常端与端之间存在大量的交互,非对称加密的加解密效率非常低。
另外,在 HTTPS 的场景中只有服务端保留了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密
为什么须要证书?
答:避免“中间人”攻打,同时能够为网站提供身份证明。
应用 HTTPS 会被抓包吗?
答:会被抓包,HTTPS 只避免用户在不知情的状况下通信被监听,如果用户被动授信,是能够构建“中间人”网络,代理软件能够对传输内容进行解密。