文章目录

  • 1:什么是https
  • 2:使用http协议的问题
    • 2.1:http是明文传输。
    • 2.2:http不会验证对方身份。
    • 2.3:http无法验证报文的完整性。
  • 3:密钥的问题
  • 4:SSL 四次握手
    • 4.1:第一次握手
    • 4.2:第二次握手
    • 4.3:第三次握手
    • 4.4:第四次握手
  • 5:SSL 的作用
    • 5.1:通过将通信加密解决http明文传输问题
    • 5.2:验证通信方的身份
    • 5.3:保证报文完整性,防止被篡改
    • 5.4:确保服务端公钥安全到达客户端。
  • 6:SSL 速度慢

1:什么是https

https并不是应用层的一种新协议。

https协议是指:http协议+加密处理+身份认证+完整性保护(http协议+SSL协议/TLS协议)

通常,http协议会直接和TCP通信,而使用https,则变成了http先和SSL通信,再由SSL和TCP通信。一般,将SSL统称SSL+TLS。

2:使用http协议的问题

  1. http协议使用明文传输数据,内容有可能会被窃听。
  2. http协议不会验证对方身份,可能会遭遇伪装。
  3. 无法验证报文的完整性,可能会遭遇篡改。

2.1:http是明文传输。

网络环境是错综复杂的,你的信息要经过许多层才能到达目的地,比如光缆,各级路由,代理服务器等,任何一个步骤被劫持都会导致你的信息内容暴露。

你总不想把你的隐私内容数据暴露在公众眼中吧。

2.2:http不会验证对方身份。

由于http不会验证对方身份,攻击者可以伪造你的身份与服务端通信。造成用户的损失。

除此之外,攻击者也可以根据此特性,不断对服务器发起请求占用服务器资源,造成 DOS 攻击。(Denial of Service,拒绝服务攻击)

2.3:http无法验证报文的完整性。


由于http无法验证报文的完整性,可能导致我们的数据被篡改。(中间人攻击)

3:密钥的问题

流行的加密方式:

  • 共享密钥(对称密钥:公钥+公钥)
  • 公开密钥(非对称密钥:私钥+公钥)

共享密钥:服务端将公钥传给客户端,客户端使用该公钥加密,服务端使用该公钥解密。

公开密钥:将公钥传给客户端,客户端接收到公钥,使用该公钥对数据加密,服务端使用私钥解密。

公开密钥的公钥谁都能获取,但由公钥加密的内容,只有服务端的私钥可以解密。

遗憾的是无论共享密钥还是公开密钥,都存在相应的问题。

共享密钥 存在怎么把密钥安全发送给对方的窘境。因为http协议是明文传输的,密钥由服务端发送给客户端的时候,存在密钥暴露的风险,无法判断从而导致加密失去意义。

公开密钥 无法判断公开的公钥本身是否是货真价实公钥。因为公钥在传输过程中有可能会被篡改。

https使用混合加密方式,因为共享密钥比公开密钥效率要快。在保证公钥能安全到达对方的时候,使用共享密钥,否则使用公开密钥。

4:SSL 四次握手

4.1:第一次握手

  1. 发送客户端支持的SSL版本及所使用的加密组件(加密算法等信息)。

4.2:第二次握手

  1. 发送服务端支持的SSL版本及所使用的加密组件(根据客户端发送过来的加密组件筛选得出)
  2. 发送公开密钥证书。
  3. 告知客户端已发送完毕。

4.3:第三次握手

  1. 通过服务端返回的公开密钥计算得出 PreMasterSecret(包含RSA加密算法,DH密钥交换算法等) 的随机密码串。
  2. 提示服务端接下来的通信使用 PreMasterSecret 密钥加密。
  3. 告知服务端发送完毕,接下来,根据服务端的回复来判断服务端是否可以正常解密。

4.4:第四次握手

  1. 告知客户端是否可以解密 PreMasterSecret 密钥加密的内容。
  2. 结束握手,SSL连接建立完毕。

接下来,通信的内容将会收到SSL的保护。

我们统称的SSL包含SSL协议与TLS协议。
SSL最初由网景通信公司倡导,开发了SSL3.0之前的版本,之后主导权交给IETF的手中。
后来,IETF在SSL3.0版本的基础上制定了TLS协议。所以我们通常统一称之为SSL。

5:SSL 的作用

5.1:通过将通信加密解决http明文传输问题

注意:这里的加密指的是将报文主体(内容)加密,报文首部(通用首部,自定义首部,请求行等)并不会加密。

5.2:验证通信方的身份

通过验证对方证书来判断对方身份。
证书是由值得信赖的第三方机构颁发。
因此要产生一定额外的费用交给颁发证书的第三方机构。

5.3:保证报文完整性,防止被篡改

通过加密及身份验证。

5.4:确保服务端公钥安全到达客户端。

首先,我们需要向第三方CA机构申请一张证书。


证书中包含了我们的名称,公钥等信息。

此外,浏览器或操作系统会内置一些可靠的第三方机构的公钥。


CA机构使用自己的私钥(不公开)对证书数据进行加密,生成签名:abcdefg

浏览器使用内置的公钥解密证书的签名,如果解密出来的信息与证书信息明文相同,则证明证书没有被篡改。


需要注意的是,CA机构生成的证书签名,是根据机构自己私钥生成的,在没有使用正确的私钥生成的签名,就会出现浏览器公钥解密签名解析出来的明文与实际明文不同的问题,然后浏览器就可以提醒用户。

可以看出,浏览器厂商的角色也很重要,前提也需要你信任浏览器厂商。

6:SSL 速度慢

SSL 虽然能保证通信的安全,但对服务器的内存和流量的消耗都会增大。

对于非敏感的信息,我们可以依旧使用 http 协议。

涉及个人信息等隐私以及重要数据的时候可以选择 https。

SSL 不仅可以用于http协议,其他应用层像 SMTP 和 Telnet 等协议均可配合 SSL协议使用。

什么是https(详细),http和https相关推荐

  1. php paypal订单号查询,PHP_php购物网站支付paypal使用方法,详细参考: https://cms.paypal.com/ - phpStudy...

    php购物网站支付paypal使用方法 详细参考: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=deve ...

  2. 封装生成器FPM0.08详细使用教程 https://www.mcuzx.com/t-111.html (出处: MCU智学网)

    封装生成器FPM0.08详细使用教程 https://www.mcuzx.com/t-111.html (出处: MCU智学网)

  3. 【https】将域名从http升级到https详细教程

    文章目录 前提摘要 证书申请 nginx 配置 额外问题排查 前提摘要 项目架构:vue+springboot+python http转发至https: nginx 证书申请 主流免费证书网站应该有挺 ...

  4. HTTPS学习笔记一----HTTPS的基础理论知识

    首先推荐一本书,<HTTP权威指南>我就是看这本书入门的,对http协议有了更好的理解,学习https的理论知识我认为需要了解以下几点,需要一步步的深入学习: 1.HTTPS的基本概念? ...

  5. python检查https过期_Python实现HTTPS网站证书过期监控及更新

    当前HTTP逐渐被大众所抛弃,HTTPS正在成为互联网上的主流.前段时间我们维护的一个HTTPS证书即将过期,由于多云环境比较复杂,团队小伙伴在替换更新证书的过程中出现疏漏,导致有一个域名证书没有及时 ...

  6. HTTPS为什么安全 分析 HTTPS 连接建立全过程

    HTTPS为什么安全 &分析 HTTPS 连接建立全过程 mikeal 15天前 技术干货  安全  HTTPS 微信分享 本文将分两个专题去理解HTTPS. 专题一:HTTPS为什么安全 1 ...

  7. python怎么做https请求_Python使用https请求的方法

    Python使用https请求的方法 发布时间:2020-07-17 11:13:34 来源:亿速云 阅读:139 作者:清晨 这篇文章主要介绍Python使用https请求的方法,文中介绍的非常详细 ...

  8. 服务器双向认证 原理,https认证方式以及HTTPS双向认证过程

    https认证方式以及HTTPS双向认证过程 分类:建站推广 编辑: 浏览量:100 2021-07-15 14:29:14 很多网站都配置了HTTPS而不是HTTP,因为安全性得到了极大的提高,如果 ...

  9. https证书安装部署 https证书怎么安装

    http和https是我们上网的时候经常见到的网络协议,当我们进入一个网站的时候,网站的域名有时候是http开头的,有时候又是https开头的,可能你们会好奇,这两者究竟有什么区别呢?https证书又 ...

最新文章

  1. 平滑无损!引入Elasticsearch的系统架构实战
  2. 常见激活函数及其求导相关知识
  3. SocketServer模块,hmac模块验证client合法性
  4. 面试基础算法及编程 第三弹(树(二叉树)相关:主要考察指针相关的操作)
  5. 分区表理论解析(下):SQL Server 2k52k8系列(二)
  6. 爬虫 selenium
  7. 2级c语言题库及答案,计算机二级c语言考试题库及答案
  8. SSM项目实战 —— 物流管理系统的实现
  9. halcon 中的select_obj使用
  10. YouTube改进之transformer
  11. 中国羽绒服市场深度调查研究报告
  12. 华为防火墙查看日志命令_华为USG防火墙运维命令大全
  13. 如何在最短的时间内完成立春主题的公众号图文排版?
  14. 【点宽专栏】研报复现——跨期价差分析与跨期套利研究
  15. html光标自动定位到文本框,进入JSP页面时就将光标定位到指定的文本框中
  16. BLE 技术(四)--- 链路层五种通信模式和空口协议设计 (Core_v5.2)
  17. OpenCV颜色空间——Lab颜色空间
  18. labview 控件变透明
  19. 菊风2019年度报告已送达,请查收!
  20. Android中拍照完就给图片加水印,Android调用相机拍照并添加水印

热门文章

  1. 计算机报名寸照能戴眼镜吗,拍证件照可以戴眼镜吗 没有明确要求
  2. appcompat_v7
  3. PHP适合做大型网站吗?
  4. gorm中created_at 时间,go time时间,mysql数据库时间的一些问题总结
  5. 三角形一点到三边距离最小_三角形内部一点到三边距离之和的上界与下界
  6. 服务器发送消息到客户端互斥,小车远程监控系统 课程设计
  7. Ubuntu设置鼠标灵敏度
  8. php redis 实现点赞,使用redis实现点赞功能的几种思路
  9. 【QQ界面展示-设置消息正文的背景图 Objective-C语言】
  10. iqooneo3 如何不用vivo账号下载外部应用_iqooneo3和小米10pro游戏性能哪个好 综合对比告诉你答案...