年前的时候进行了一家公司的电话面试两轮, 视频面试一轮(已拿到 offer), 过程中遇到了一个关于 http 与 https 的问题, 当时回答的并不好, 今天将其进行了总结和整理, 望读者喜欢;
前言
谷歌在 2018 年, 2 月 9 日宣布从今年 7 月起, Chrome 浏览器将在地址栏把所有 HTTP 网址标示为不安全网站
谷歌早在 2017 年 1 月发布的 Chrome 56, 开始把要求用户输入密码或信用卡信息的 HTTP 网页标识为不安全; 2017 年 10 月发布的 Chrome62, 开始把需要输入数据的 HTTP 网页和在 Incognito 模式下浏览的 HTTP 网站标示为不安全
http 与 https 的概念
http: 超文本传输协议, 是一个客户端和服务器端请求和应答的标准, 用于从 WWW 服务器传输超文本到本地浏览器的传输协议, 它可以使浏览器更加高效, 使网络传输减少;
https 为: 超文本传输安全协议, 也就是说是 http 的安全版本, https 由 http 进行通信, 但利用 SSL/TLS 来加密数据包
HTTPS 开发的主要目的, 是提供对网站服务器的身份认证, 保护交换数据的隐私与完整性这个协议由网景公司 (Netscape) 在 1994 年首次提出, 随后扩展到互联网上
http 存在的问题
容易被监听
http 通信都是明文, 数据在客户端与服务器通信过程中, 任何一点都可能被劫持比如, 发送了银行卡号和密码, hacker 劫取到数据, 就能看到卡号和密码, 这是很危险的
被伪装
http 通信时, 无法保证通行双方是合法的, 通信方可能是伪装的比如你请求 ++www.taobao.com++, 你怎么知道返回的数据就是来自淘宝, 中间人可能返回数据伪装成淘宝
被篡改
hacker(黑客)中间篡改数据后, 接收方并不知道数据已经被更改
https 解决的问题
https 恰好解决了上述的三个问题(被监听被篡改被伪装),https 不是一种新协议, 它是由 http+SSL 的结合体, 由之前的 http>tcp, 改为 http>SSL>tcp;
防监听
因为数据是加密的, hacker 监听得到的是密文, 看不懂的;
防伪装
https 在通信过程中, 客户端和服务器端都是携带证书的, 证书相当于身份证, 有证书就是合法, 没有就是非法, 证书由第三方颁布, 很难伪造;
防篡改
https 对数据进行了摘要处理, 即使被篡改也是会被感知的, 改了数据也没有用;
http 与 https 的区别
https 比 http 更安全
http 协议传输的数据时未经过加密的, 也就是说是明文;
https 在使用 http 进行通信时, 利用了 SSL 进行了加密传输身份认证的网络协议(http+SSL), 比 http 更安全
https 使用需要 CA 证书, 大部分都是付费使用的;
CA 是 Certificate Authority 的缩写, 也叫证书授权中心, 也是需要第三方公司进行授权的详情看这里
端口不一样
HTTP 的 URL 由 http:// 起始且默认使用 80 端口;
HTTPS 的 URL 由 https:// 起始且默认使用 443 端口;
https 工作原理
如图所示, https 工作原理可以细分为八个步骤:
1 客户端发起 HTTPS 请求
用户在浏览器里输入一个 https 网址, 然后连接到 server 的 443 端口
2 服务端的配置
就是指上述提到的数字证书;
3 传送证书
web 服务器收到客户端请求后, 会将网站的证书信息 (证书中包含公钥) 传送一份给客户端
4 客户端解析证书
客户端会对证书进行判断, 验证公钥是否有效, 存在问题弹出会警告; 若没有问题, 生成一个随机值(私钥), 然后用证书继续进行加密;
5 传送加密信息
客户端将上加密后的随机值 (私钥) 提供给服务端, 服务端会对其进行解密;
6 服务端解密信息
服务端解密后得到随机值 (私钥), 然后把内容通过该值进行对称加密对称加密就是指把要返回的信息和随机值(私钥) 混合加密, 这样除非知道随机值(私钥), 不然无法获取数据
7 传输加密后的信息
继续将加密后的信息传递给客户端;
8 客户端解密信息
客户端用之前生成的私钥 (随机值) 解密服务端传过来的信息, 于是获取了解密后的内容
https 缺点
https 虽然安全性比 http 高出很多但是也有一些缺点
握手阶段费时
因为 SSL 的缘故, HTTPS 协议握手阶段比较费时, 会使页面的加载时间延长近 50%;
SSL 证书需要花钱
便宜没好货, 好货不便宜;
HTTPS 连接缓存不如 HTTP 高效
HTTPS 连接缓存不如 HTTP 高效, 会增加数据开销和功耗, 甚至已有的安全措施也会因此而受到影响;
SSL 证书通常需要绑定 IP
SSL 证书通常需要绑定 IP, 不能在同一 IP 上绑定多个域名, IPv4 资源不可能支撑这个消耗
有局限性
HTTPS 协议的加密范围也比较有限, 在黑客攻击拒绝服务攻击服务器劫持等方面几乎起不到什么作用最关键的, SSL 证书的信用链体系并不安全, 特别是在某些国家可以控制 CA 根证书的情况下, 中间人攻击一样可行
参考文章:
- https://en.wikipedia.org/wiki/HTTPS
- https://www.cnblogs.com/wqhwe/p/5407468.html
- http://blog.csdn.net/wangjun5159/article/details/51510594
来源: https://www.cnblogs.com/wangyue99599/p/8459734.html