为什么要使用 HTTPS 协议

在将 HTTP 数据提交给 TCP 层之后,数据会经过用户电脑、WiFi 路由器、运营商和目标服务器,在这中间的每个环节中,数据都有可能被窃取或篡改。比如用户电脑被黑客安装了恶意软件,那么恶意软件就能抓取和篡改所发出的 HTTP 请求的内容。或者用户一不小心连接上了 WiFi 钓鱼路由器,那么数据也都能被黑客抓取或篡改。

什么是 HTTPS 协议

实际上就是在 HTTP 协议栈中引入安全层,所有经过安全层的数据都会被加密或者解密

安全层有两个主要的职责:

  1. 对发起 HTTP 请求的数据进行加密操作。
  2. 对接收到 HTTP 的内容进行解密操作。
    下面一步步实现一个从简单到复杂的 HTTPS 协议

第一版:使用对称加密

对称加密是指加密和解密都使用的是相同的密钥。

  1. 浏览器端弄个随机数(client-random),并发送它所支持的加密套件列表(指浏览器能支持多少种加密方法列表)。
  2. 服务器从发过来的加密套件列表里选择一个,并也整个随机数(service_random),并返回给浏览器
  3. 浏览器跟服务器分别返回确认信息。
    按加密套件算法,将 client-randomservice-random 混合起来生成一个密钥 master secret,然后基于这个密钥进行数据的加密传输。

缺点:
由于 client-randomservice-random 都是明文传输,所以会被截获。
黑客拿到协商的加密套件和双方的随机数,生成密钥。

第二版:使用非对称加密

非对称加密算法有 A、B 两把密钥,如果你用 A 密钥来加密,那么只能使用 B 密钥来解密;反过来,如果你要 B 密钥来加密,那么只能用 A 密钥来解密。

  1. 浏览器发送它所支持的加密套件列表。
  2. 服务器会生成个公钥跟私钥,公钥是给浏览器加密使用的,所以将公钥跟选择的加密套件返回
  3. 浏览器跟服务器分别返回确认信息。

这样浏览器向服务端发送数据时,就可以采用公钥来加密数据,由于公钥的数据只有对应的私钥才能解密,即便黑客截取了数据和公钥,也是无法解密的。
缺点:

  1. 非对称加密的效率太低
  2. 无法保证服务器发送给浏览器的数据安全,因为服务端是采用私钥加密的,而黑客是可以拦截到公钥,这样服务端返回的数据就得不到保障。

第三版:对称加密和非对称加密搭配使用

在传输数据阶段依然使用对称加密,但是对称加密的密钥我们采用非对称加密来传输。

  1. 浏览器端弄个随机数(client-random),并发送它所支持的加密套件列表和非对称加密套件列表。
  2. 服务器会生成个公钥和私钥,并弄个随机数(service-random),返回该随机数、公钥、选择的加密套件、非对称加密套件
  3. 浏览器再生成个随机数 pre-master ,并采用公钥加密,进行浏览器确认
  4. 最后服务器拿出自己的私钥,解密出 pre-master 数据,并返回确认消息。

这样浏览器跟服务器就有了一致 client-randomservice-randompre-master,根据这些生成对称密钥,由于两端采用的是一套对称加密套件,所以生成的密钥是一致的。
pre-master 是经过公钥加密之后传输的,所以黑客无法获取到 pre-master,这样黑客就无法生成密钥,也就保证了黑客无法破解传输过程中的数据了。
缺点:
黑客通过 DNS 劫持将你所在官网的 IP 地址替换成了黑客的 IP 地址。
即无法证明服务器是可靠的。

第四版:添加数字证书

需要服务器向浏览器提供证明“我就是我”:
使用权威机构颁发的证书,这个权威机构称为 CA(Certificate Authority),颁发的证书就称为数字证书(Digital Certificate)。
对于浏览器来说,数字证书作用:

  1. 一个是通过数字证书向浏览器证明服务器的身份
  2. 另一个是数字证书里面包含了服务器公钥。

    两点改造:
  3. 服务器没有直接返回公钥给浏览器,而是返回了数字证书,而公钥包含在数字证书中;
  4. 在浏览器端多了一个证书验证的操作,验证了证书之后,才继续后续流程。

HTTPS 的握手过程

  1. 首先是 tcp 的三次握手建立连接
  2. client 发送 random1 +支持的加密算法集合(clientHello
  3. server 收到信息,返回选择一个加密算法 + random2serverHello)+ 证书+ 确认
  4. clent 验证证书有效性,并生成随机数 pre-master ,并通过服务器公钥加密 发送给 server
  5. server 收到 premaster ,根据约定的加密算法对 random1 + random2 + premaster(解密)生成 master-secret ,然后发送预定成功
  6. client 收到生成同样的 master-secert,对称加密秘钥传输完毕

浏览器安全之网络安全(HTTPS)相关推荐

  1. 谷歌chrome浏览器把不是https的网站标注为不安全

    站长注意了,谷歌chrome浏览器把不是https的网站标注为不安全. 现在chrome浏览器市场占有率很高,大概在60%,所以站长还是把网站升级成https吧,安装一下SSL证书. 网络安全越来越重 ...

  2. 浏览器自动转到外国服务器,通过HSTS实现浏览器自动跳转https(非服务器响应跳转)...

    全称 HTTP Strict Transport Security HSTS目的是让浏览器在访问网站的时候浏览器内部自动实现https协议访问(不需要服务器告诉浏览器跳转https). 在没有hsts ...

  3. 开启HSTS让浏览器强制跳转HTTPS访问

    开启HSTS让浏览器强制跳转HTTPS访问 来源 https://www.cnblogs.com/luckcs/articles/6944535.html 在网站全站HTTPS后,如果用户手动敲入网站 ...

  4. 设置Web浏览器的HTTP或HTTPS代理(设置网页IP代理)

    [1]设置Web浏览器的HTTP或HTTPS代理: 原理:非常简单,修改注册表中的两个键值,然后调用InternetSetOption函数更新即可. 步骤: 1.打开注册表:HKEY_CURRENT_ ...

  5. 浏览器安全——Web页面安全浏览器网络安全(HTTPS)浏览器系统安全

    一.Web页面安全 同源和跨域: 什么是同源?如果两个页面拥有相同的协议(scheme).域名(host)和端口(port)(http默认port80,https默认端口号443),那么这两个页面具有 ...

  6. 浏览器同部署了https的服务器交互的过程

    1 浏览器发起https请求 2 https服务器发送自己的公钥给浏览器 3 浏览器用https服务器发送过来的公钥加密一个用于双方通信的的对称密码 4 https服务器用自己的私钥解密,获取对称密码 ...

  7. charles浏览器抓包https_charles https抓包

    1. 配置 Charles 根证书 首先打开 Charles: Charles 启动界面 主界面 然后如下图操作: 之后会弹出钥匙串,如果不弹出,请自行打开钥匙串,如下图: 钥匙串 系统默认是不信任 ...

  8. 浏览器是如何验证HTTPS证书合法性的?

    一个新的网站去买了ca证书,用户通过浏览器去访问,这时候浏览器如何去验证这个证书的正确性,防止被中间人攻击? 是需要到ca网站上去验证吗还是什么? 下文通过介绍https证书的结构组成和浏览器如何验证 ...

  9. 为什么Chrome浏览器会告诉你HTTPS站点是“安全的

    2019独角兽企业重金招聘Python工程师标准>>> 为配合挂锁图标,7个选项被进行测试,其中包括"私有的"和"加密的"...... 去年1 ...

最新文章

  1. R语言可视化包ggplot2绘制线性回归模型曲线实战( Linear Regression Line)
  2. Android中View绘制流程以及invalidate()等相关方法分析
  3. Windows文件被占用解决办法
  4. HDU-6290 奢侈的旅行 2018女赛 Dijkstra堆优化
  5. 解决cc1plus.exe: out of memory allocating bytes
  6. ACM数论之旅4---扩展欧几里德算法(欧几里德(・∀・)?是谁?)
  7. 点分治(简要讲解 + 模板)
  8. Tomacat乱码解决
  9. centos-7.2 node.js免编译安装
  10. python执行批处理文件_如何从Python中执行批处理文件,从而改变调用进程的环境?...
  11. 无插件实现大文件分片上传,断点续传
  12. 前端模板技术的全面总结
  13. CocoaPods pod install的时候报错:invalid byte sequence in UTF-8 (ArgumentError)解决办法
  14. Chrome 快捷键
  15. php 上传图片 裁剪,thinkphp_图片上传裁剪功能_已迁移
  16. 在Linux中连接和使用云存储的三种途径
  17. 会员管理系统,建议收藏!
  18. 美国空运专线 美国空运专线时效多久
  19. 计算机存储1pb等于多少kb,存储容量:1TB等于多少GB?1PB等于多少TB?1EB等于多少PB?
  20. 网络安全的魔法——社会工程学

热门文章

  1. JAVA编程---------英雄对战游戏
  2. 在eclipse上运行html文件
  3. 嵌入式技术栈之spi协议的时序
  4. open judge 1.6.3
  5. Onenote插入代码块
  6. 【U8】13.0 固定资产折旧清单与折旧分配表不一致的问题
  7. 学校计算机的使用英语作文180字,计算机(Computer)
  8. CTS2019 氪金手游
  9. 万字手撕七大排序(代码+动图演示)
  10. 九章算术 九:《勾股》