相关博客:https://www.cnblogs.com/chentianwei/p/9374341.html  (讲的更明白,有图)

HTTPS


7.1http的缺点

  1. 使用明文,内容会被窃听。
  2. 不验证通信方的身份,遭遇伪装。
  3. 无法证明报文完整性,可能被篡改。

7.11 通信被窃听

互联网上任何角落都存在被窃听的风险。

Packet Capture, Sniffer抓包和嗅探器,如广泛使用的Wireshark工具。

  • 通信加密: HTTP over SSL就是HTTPS。  增加了Secure Socket Layer安全套接层SSL。
  • 内容加密:报文主体进行算法加密(非整个通信线路的加密,有被破解的风险)

7.12 不验证,遭遇伪装

http协议由于不对身份验证,任何人都可以发送请求,所以留下各种隐患:

  • 伪装的服务器。无法确定请求是否发送到真正的目标服务器,可能请求被拦截,然后使用伪装的服务器返回响应。
  • 同样,客户端也有可能是伪装的。
  • 无法判定请求来自何方,(没有证书)
  • 服务器对无意义的请求也会接收,无法阻止海量的DoS攻击,(拒绝服务攻击:通过大量请求信息沾满服务器资源,导致真正的请求无法处理)

通过证书机构颁发的证书来验证身份是一种安全保障:

7.13 无法证明报文的完整性, 中间人攻击

Man-in-the-Middle attach中间人攻击: 攻击人会篡改请求和响应,让服务器和客户端之间的通信看起来仍是正常的,但实际已经被控制。

如何防止篡改:

常用的MD5和SHA-1等hash值校验的方法,和用来确认文件的数字签名方法,仍不能完全保障安全。

(见博客:6.66 Content-MD5首部)

MD5是单向函数生成的散列值。本身仍可能被篡改。因此必须使用HTTPS。

SSL提供了认证和加密处理, 摘要功能。


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

7.23 Public-key cryptography  公开密匙 密码算法

加密算法公开,但密匙是保密的。只有通过密匙,才能对密码解密。

双方使用这个算法对通信的内容进行加密和解密,以保障信息的安全。但是,

如何安全的把密匙传给对方?

这是对称加密算法的困境。(Common key crypto system 共享密匙加密系统)

答案:使用公开密匙加密算法。又叫做非对称密匙加密算法。

公开密匙由,一把private key和 任意多的公key组成。接收密文的一方持有private key,发送密文的一方持有公key。通过公key加密的报文,只有private key可以解开。

因此,服务器只需要把公key提供给客户端。

HTTPS的混合加密机制:

  1. 密匙交换环节:客户端获得公开密匙,通过非对称加密算法加密传输‘对称密匙’给服务器
  2. 通信交换报文环节:双方使用对称密匙加密方式,交换报文。

7.24证明公开密匙正确性的证书

客户端获得的公开密匙有可能被黑客调包了,客户得到的是假的公开密匙,怎么办?

答案:使用数字证书认证机构颁发的公开密匙证书。

服务器运营者申请数字证书的业务流程:

  申请->确认身份->对申请的公开密匙做数字签名->分配这个签名的公开密匙,并将密匙和证书绑定。

  1. 服务器把公钥和证书发给客户端。
  2. 客户端用数字证书认证机构的公开密匙对证书上的数字签名进行验证。
  3. 一旦验证通过,客户端即可安全的使用服务器的公开密匙了。

⚠️: 多数浏览器内部会有常用认证机构的公开密匙。

客户端也可以使用数字证书。在安全性极高的领域:如网上银行的网银登陆就使用了客户端证书。

扩展:认证机构的信誉第一,认证机构有被黑客入侵的事件发生。

7.25 HTTPS的安全通信机制

HTTPS的成本导致网站不会一直使用

  1. 加密消耗更多的cpu, cache
  2. 购买证书也是开销,一个证书600元/年。

SSL导致通信慢,和处理速度慢。比http慢2-100倍。

针对这一问题有专门的服务器来改善问题,不过这又是成本。

《图解Http》 HTTPS 安全协议的更多相关文章

  1. Https握手协议以及证书认证

    1. 什么是https Https = http + 加密 + 认证 https是对http的安全强化,在http的基础上引入了加密和认证过程.通过加密和认证构建一条安全的传输通道.所以https可以 ...

  2. (转) HTTP & HTTPS网络协议重点总结(基于SSL/TLS的握手、TCP/IP协议基础、加密学)

    HTTP & HTTPS网络协议重点总结(基于SSL/TLS的握手.TCP/IP协议基础.加密学) 原文:http://blog.csdn.net/itermeng/article/detai ...

  3. 【密码学】Https握手协议以及证书认证

    1. 什么是https Https = http + 加密 + 认证 https是对http的安全强化,在http的基础上引入了加密和认证过程.通过加密和认证构建一条安全的传输通道.所以https可以 ...

  4. 安卓开发学习笔记(五):史上最简单且华丽地实现Android Stutio当中Webview控件https/http协议的方法

    一.我们先在XML当中自定义一个webview(Second_layout.xml) 代码如下: <?xml version="1.0" encoding="utf ...

  5. https安全协议原理

    那么什么是HTTPS? HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议.HTTPS经由HTTP进行通信,但利用TLS来加密 ...

  6. 图解HTTP / HTTPS

    http://kb.cnblogs.com/page/155287/ 我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议 ...

  7. 在window平台下,自己DIY编译OpenSSL,Libcurl ,来支持HTTPS传输协议

    1 缘起 原来就了解些libcurl,一直没有机会在项目实际使用libcurl.   恰好最近一个云存储的项目,服务器使用openstack 恰好我负责现在的一个云存储SDK c++版本的开发中. 与 ...

  8. TCP/IP,HTTP,HTTPS,WEBSocket协议

    我看看着挺多的,我暂时没时间自己写,有需要的请借鉴 http://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247486927&id ...

  9. 【计算机网络】你真的了解HTTP(HTTPS)协议的这12个知识点吗

    HTTP协议 1. 介绍一下OSI七层参考模型和TCP/IP五层模型 1.1 OSI七层模型 1.2 TCP/IP五层模型 1.3 各层的设备 [各层设备] 1.4 各层对应协议 2. HTTP协议和 ...

随机推荐

  1. Java overload和override的区别分析

    Java overload和override的区别分析 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现.重写(Overriding)是父类与子类之间多态性 ...

  2. jstat命令查看jvm的GC情况

    jstat命令可以查看堆内存各部分的使用量,以及加载类的数量.命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]  注意!!!:使用的jdk版本是jdk8. ...

  3. LINUX环境变量(一)

    Linux 的变量可分为两类:环境变量和本地变量 环境变量,或者称为全局变量,存在与所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了.Linux 的环境变量具有继承性,即子 ...

  4. python webdriver 从无到有搭建混合驱动自动化测试框架的过程和总结

    一步一步实现混合驱动自动化测试框架的搭建 混合驱动自动化测试框架,是一个非常高级的框架,非常好用,但也很难,不好掌握,需要多练习,就像搭建数据驱动框架一样,需要自己去一点一点的写,一边搭建一边做思路整 ...

  5. IO(File)

    1. 一个File类的对象,表示了磁盘上的文件或目录 2. File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作 3. File对象可用来获取或处理与磁盘文件相关的信息,如:权限,时间,日期 ...

  6. Linux基础命令---cpio

    cpio 从归档中复制文件,或者复制文件到归档中.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. Cpio命令有三种工作模式: 1)c ...

  7. xmind使用教程思维导图

    xmind使用教程思维导图 开始XMind旅程标记: 仅需2个快捷键 1 点击快捷键 创建同级主题 创建子主题 2 输入 选中主题后, 双击鼠标左键 或 单击空格键, 进入编辑状态. 3 其他内容 您 ...

  8. 深入浅出JVM

    这篇文章简要解析了JVM的内部结构.下面这幅图展示了一个典型的JVM(符合JVM Specification Java SE 7 Edition)所具备的关键内部组件. 上图展示的所有这些组件都将在下 ...

  9. Linux(RedHat) 开机时修改root密码

    全程上图 开机的时候看到以下的界面, 按e进入编辑界面 然后就看到这个 再按一下e, 选择第二项 选中第二项后按e进入编辑界面, 输入single(记得有空格),然后回车, single就是启动单用户 ...

  10. Fast特征点的寻找和提取

    一.基础 最初由Rosten和Drummond [Rosten06]提出的FAST(加速段测试的特征)特征检测算法是基于将点P与其包围圆内的点集的直接比较的思想. 基本思想是,如果附近的几个点与P类似 ...