透视HTTP协议
罗剑锋(Chrono)
奇虎360技术专家,Nginx/OpenResty开源项目贡献者
立即订阅
6077 人已学习
课程目录
已完结 44 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词|To Be a HTTP Hero
免费
破冰篇 (7讲)
01 | 时势与英雄:HTTP的前世今生
02 | HTTP是什么?HTTP又不是什么?
03 | HTTP世界全览(上):与HTTP相关的各种概念
04 | HTTP世界全览(下):与HTTP相关的各种协议
05 | 常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?
06 | 域名里有哪些门道?
07 | 自己动手,搭建HTTP实验环境
基础篇 (7讲)
08 | 键入网址再按下回车,后面究竟发生了什么?
09 | HTTP报文是什么样子的?
10 | 应该如何理解请求方法?
11 | 你能写出正确的网址吗?
12 | 响应状态码该怎么用?
13 | HTTP有哪些特点?
14 | HTTP有哪些优点?又有哪些缺点?
进阶篇 (8讲)
15 | 海纳百川:HTTP的实体数据
16 | 把大象装进冰箱:HTTP传输大文件的方法
17 | 排队也要讲效率:HTTP的连接管理
18 | 四通八达:HTTP的重定向和跳转
19 | 让我知道你是谁:HTTP的Cookie机制
20 | 生鲜速递:HTTP的缓存控制
21 | 良心中间商:HTTP的代理服务
22 | 冷链周转:HTTP的缓存代理
安全篇 (7讲)
23 | HTTPS是什么?SSL/TLS又是什么?
24 | 固若金汤的根本(上):对称加密与非对称加密
25 | 固若金汤的根本(下):数字签名与证书
26 | 信任始于握手:TLS1.2连接过程解析
27 | 更好更快的握手:TLS1.3特性解析
28 | 连接太慢该怎么办:HTTPS的优化
29 | 我应该迁移到HTTPS吗?
飞翔篇 (4讲)
30 | 时代之风(上):HTTP/2特性概览
31 | 时代之风(下):HTTP/2内核剖析
32 | 未来之路:HTTP/3展望
33 | 我应该迁移到HTTP/2吗?
探索篇 (5讲)
34 | Nginx:高性能的Web服务器
35 | OpenResty:更灵活的Web服务器
36 | WAF:保护我们的网络服务
37 | CDN:加速我们的网络服务
38 | WebSocket:沙盒里的TCP
总结篇 (2讲)
39 | HTTP性能优化面面观(上)
40 | HTTP性能优化面面观(下)
答疑篇 (2讲)
41 | Linux/Mac实验环境搭建与URI查询参数
42 | DHE/ECDHE算法的原理
结束语 (1讲)
结束语 | 做兴趣使然的Hero
透视HTTP协议
登录|注册

23 | HTTPS是什么?SSL/TLS又是什么?

Chrono 2019-07-19
从今天开始,我们开始进入全新的“安全篇”,聊聊与安全相关的 HTTPS、SSL、TLS。
第 14 讲中,我曾经谈到过 HTTP 的一些缺点,其中的“无状态”在加入 Cookie 后得到了解决,而另两个缺点——“明文”和“不安全”仅凭 HTTP 自身是无力解决的,需要引入新的 HTTPS 协议。

为什么要有 HTTPS?

简单的回答是“因为 HTTP 不安全”。
由于 HTTP 天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求 / 响应报文,数据不具有可信性。
比如,前几讲中说过的“代理服务”。它作为 HTTP 通信的中间人,在数据上下行的时候可以添加或删除部分头字段,也可以使用黑白名单过滤 body 里的关键字,甚至直接发送虚假的请求、响应,而浏览器和源服务器都没有办法判断报文的真伪。
这对于网络购物、网上银行、证券交易等需要高度信任的应用场景来说是非常致命的。如果没有基本的安全保护,使用互联网进行各种电子商务、电子政务就根本无从谈起。
对于安全性要求不那么高的新闻、视频、搜索等网站来说,由于互联网上的恶意用户、恶意代理越来越多,也很容易遭到“流量劫持”的攻击,在页面里强行嵌入广告,或者分流用户,导致各种利益损失。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《透视HTTP协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(17)

  • Cris
    SSL 即安全套接层,老师我发现您在开车,奈何没有证据

    作者回复: ??何解??

    2019-08-21
    1
    4
  • Geek_54edc1
    机密性由对称加密AES保证,完整性由SHA384摘要算法保证,身份认证和不可否认由RSA非对称加密保证

    作者回复: √

    2019-07-19
    4
  • 业余草
    老师,我的个人网站:https://www.xttblog.com 在mac上的谷歌浏览器最新版中控制台总是会报一个错误,而我已经是https了,这个问题,空扰了我很久

    作者回复: 什么错误,说出来看看。

    2019-08-05
    4
    3
  • 彩色的沙漠
    1、HTTPS相对于HTTP具有机密性,完整性,身份认证和不可否认的特性,HTTPS是HTTP over SSL/TLS,HTTP> HTTP over TCP/IP
    2、实现机密性可以采用加密手段,接口签名实现完整性,数字签名用于身份认证

    作者回复: √

    2019-07-19
    3
  • -W.LI-
    老师好!有个问题,之前调用第三方的支付走https协议都需要本地配置一个证书。为啥最近有个项目也是用的https协议(url里会放token)。直接和http一样调用就好了,不需要本地配置证书了呢?

    作者回复: 本地证书是用来做双向认证的,服务器用客户端的证书来验证客户端的证书。

    通常我们上网是单向认证,只验证服务器的身份,客户端(也就是用户)的身份不用证书验证。

    2019-07-25
    2
  • David Mao
    老师,请教一下,我们现在正在申请SSL证书,SSL证书有专门的机构颁发,文中老师提到HTTPS能够鉴别危险网站,防止黑客篡改,这些具体是怎么做到的呢?由专门机构颁发的原因是什么?谢谢老师。

    作者回复: 如果网站是http而不是https,那么浏览器就会认为网站不安全,有风险。

    如果证书内容不完善,或者被列入了黑名单,那么浏览器也可以提示用户有危险。

    这些的关键都是证书,用证书里的信息,来验证网站的有效性、真实性。

    因为证书用来证明网站的身份,就像身份证、学位证一样,如果随便颁发,那么它的可靠性就得不到保证,所以必须要由指定信任的专门机构来颁发,由ca来“背书”,保证证书和它关联的网站是安全可靠的。

    2019-07-20
    2
  • Flourishing
    老师,以下问题,麻烦解答:
    1. 这就是 HTTPS 与 HTTP 最大的区别,它能够鉴别危险的网站?这个仅仅从浏览器弹出不安全的提示来说的嘛?或者说怎么个鉴别法?
    2. 网站是否真实也无法验证。加了https的网站也有可能是钓鱼网站吧?也没法验证啊?

    作者回复:
    1.如果网站的证书不可信(过期、失效、被废除、伪造),那么就可以说明网站是不安全的,而http不能对网站有任何的认证措施。

    2.证书有dv、ov、ev三种,能从ca的层面证明网站的所有者。

    3.当然,如果网站故意作恶,https也无法制止,它只能证明网站确实是如证书所声明的,不是假冒的。

    2019-12-11
    1
  • 老王的老李头
    1、https与http协议相比,最重要的是增加安全性,这种安全性的实现主要是依赖于两个协议底层依赖的协议是不同的,https在传输的应用层与传输层协议之间增加了ssl/tls,这就使得http在固有协议之上增加一层专用用于处理数据安全的工具。

    2、机密性:数据使用非对称加密传输
    完整性:数据用公钥加密,私钥解密,数据生成摘要算法,同步传输

    作者回复:
    1.正确。

    2.机密性主要用对称加密实现,非对称加密虽然也可以,但是效率太低,不实用。

    2019-11-08
    1
    1
  • 何用
    P-256 是 NIST(美国国家标准技术研究所)和 NSA(美国国家安全局)推荐使用的曲线。而密码学界不信任这两个机构,所以 P-256 是有可能被秘密破解但出于政治考虑而未公开?

    作者回复: 是的,可能有这个隐患,就跟des一样。

    2019-07-22
    1
  • sunözil
    老师,目前项目使用了https,如何换成GmSSL呢?

    作者回复: GmSSL是OpenSSL的分支,但应用的并不广,nginx、Apache等项目并没有提供官方支持,可能需要比较多的自己开发改造了。

    我觉得可以看一下它的官方文档,如何替换OpenSSL。

    2019-12-12
  • qiezitx
    1、外面的:uri里的协议名和默认端口号不一样,里面的:HTTP是基于TCP/IP,HTTPS是基于SSL/TLS
    2、目前的理解:机密性分信道机密和内容机密,分别对应密钥交换算法和加密算法;身份认证对应签名算法;完整性对应摘要算法;不可否认性能理解,但还没参透对应什么。
    继续学习

    作者回复: 认真的学习态度!

    2019-09-26
  • 蒋润
    老师你好 https能有效防止抓包然后篡改报文数据,防止xxs攻击吗

    作者回复: https传输的内容是加密的,所以抓包后看不到明文,是无法窜改数据的。

    但xss属于内容攻击,报文本身是合法的,所以它不能防止。

    https只能保证数据传输安全,但在链接的两端不能提供保护。

    2019-09-24
  • 肥low
    1. http是http over tcp/ip,https是http over tls/ssl over tcp/ip,https比http在会话层多了tls/ssl
    2. 通过sha256摘要算法保证数据机密性、完整性,通过非对称加密算法实现身份认证,数据不可逆性

    作者回复: sha256保证的是完整性,不能实现机密性。

    2019-09-17
    1
  • J.D.
    OpenSSL1.1.1 开始支持国密算法。

    作者回复: SM系列算法是国产算法,但在国际上用的不多。

    2019-08-12
  • 老师好,有几个问题请教下:“收发报文不再使用 Socket API,而是调用专门的安全接口。”这个安全接口是什么呢?另外SSL/TLS运行在第五层,通讯不走下层TCP/IP的话,怎么把消息发到交换机呢?

    作者回复: 可以看一下https的协议栈,它的下面还是tcp/ip。

    拿OpenSSL来说,它提供了一系列的接口函数,比如SSL_read、SSL_write,加密后封装成tls记录,再交给tcp传输。

    2019-07-19
  • WL
    请问一下老师我这边用WireShark抓包,发现两个TLS请求和响应之间和两个HTTP请求和响应之间有很多个TCP的包,请问一下这些TCP的包是一个HTTP的响应没有发完后续一致在通过TCP包发HTTP响应的responseBody吗?

    作者回复: 应该在wireshark里看一下这些tcp包的端口、发送方向,应该不是https相关的包,可以过滤一下试试。

    https必须在ssl/tls握手之后才能发送http报文。

    2019-07-19
  • 火车日记
    1 明文、不安全vs四个特性,端口80vs端口443,无加密解密流畅性vs一定的性能消耗
    2 对称加密算法保证机密性,散列值算法保证完成性和安全性

    作者回复: √

    2019-07-19
收起评论
17
返回
顶部