[转帖]七牛云对HTTPS 的解释

感觉对RTT 还有 建立连接的说明挺好的 转帖一下 学习

https://www.cnblogs.com/qiniu/p/6856012.html

序?魔戒再现

几天前,OpenSSL 官方宣布即将发布的新版本 (OpenSSL 1.1.1) 将会提供 TLS 1.3 的支持,而且还会和之前的 1.1.0 版本完全兼容,这当然是个好消息。如果说 HTTP/2 是当前互联网 Web 发展的讨论热点之一,那么下一个热点应该就是 TLS 1.3 了。

谈到 TLS 那么就不得不说回 HTTPS,2016 年应该算是国内站点使用 HTTPS 激增的一年,从 Google Trend 上也可以看出该关键词的搜索热度从 2016 年开始飙升。不光如此,所有从事互联网 Web 技术相关的开发人员,也应该能够明显感受到,身边使用 HTTPS 的网站越来越多了。

为什么近两年来 HTTPS 被大家更广泛的应用?

一方面得益于「中国特色」的网络安全环境,运营商层出不穷的各种劫持给所有的用户和开发者都上了生动的一课。

用户每天被来自各种广告联盟漫天的牛皮癣广告和运营商话费余额查询所包围。不仅如此,随着公司流量不断的被劫持导流到其他地方。搞得很多公司连苦心经营的市场蛋糕都没办法安心的吃,终于大部分公司坐不住了。当然声讨和口诛笔伐是没有用的,所以拥有业务上拥有 HTTPS 和 HTTP DNS 解决方案,也就顺理成章的成了技术公司在伟大防火墙内生存的必备技能之一。

另一方面,从安全角度讲,互联网上通过明文传输数据本身就是一件高风险的事情,什么数据泄露、中间人攻击、用户被盗号、被竞争对手背后捅刀子 App 下载被劫持.....也是屡见不鲜。

那么说回主题,既然 HTTPS 可以一劳永逸的解决上述问题,而为什么大家之前不尽快的用起来?

问题在于:考虑到 HTTPS 要比 HTTP 更加消耗服务器资源,而且相比于 HTTP 建立连接握手时需要消耗的大量时间影响用户端的体验,使得很多人望而却步,尤其是在移动网络下

当然,还有 SSL 证书的成本也要算进去。

王者归来

在 Web 领域,传输延迟(Transmission Latency)是 Web 性能的重要指标之一,低延迟意味着更流畅的页面加载以及更快的 API 响应速度。而一个完整的 HTTPS 链接的建立大概需要以下四步:

第一步:DNS 查询

浏览器在建立链接之前,需要将域名转换为互联网 IP 地址。一般默认是由你的 ISP DNS提供解析。ISP 通常都会有缓存的,一般来说花费在这部分的时间很少。

第二步:TCP 握手( 1 RTT)

和服务器建立 TCP 连接,客户端向服务器发送 SYN 包,服务端返回确认的 ACK 包,这会花费一个往返(1 RTT)。

第三步:TLS 握手 (2 RTT)

该部分客户端会和服务器交换密钥,同时设置加密链接,对于 TLS 1.2 或者更早的版本,这步需要 2 个 RTT。

第四步:建立 HTTP 连接(1 RTT)

一旦 TLS 连接建立,浏览器就会通过该连接发送加密过的 HTTP 请求。

我们假设 DNS 的查询时间忽略不计,那么从开始到建立一个完整的 HTTPS 连接大概一共需要 4 个 RTT,如果是浏览刚刚已经访问过的站点的话,通过 TLS 的会话恢复机制,第三步 TLS 握手能够从 2 RTT 变为 1 RTT。

总结:

建立新连接 :

4 RTT + DNS 查询时间

访问刚浏览过的连接:

3 RTT + DNS 查询时间

那么 TLS 1.3 以及 0-RTT 是如何减少延迟的?

在此之前我们需要简单回顾一下 TLS 1.2 是如何工作的

TLS 1.2 建立新连接

  1. 在一次新的握手流程中,Client Hello 总是客户端发送的第一条消息,该消息包含客户端的功能和首选项,与此同时客户端也会将本身支持的所有密码套件(Cipher Suite)列表发送过去
  1. Server Hello 将服务器选择的连接参数传送回客户端,同时将证书链发送过去,进行服务器的密钥交换
  1. 进行客户端部分的密钥交换,此时握手已经完成,加密连接已经可以使用
  1. 客户端建立 HTTP 连接

TLS 1.2 会话恢复

会话恢复:

在一次完整协商的连接断开时,客户端和服务器都会将会话的安全参数保留一段时间。希望使用会话恢复的服务器会为会话指定唯一的标识,称为会话 ID。

  1. 希望恢复会话的客户端将相应的会话 ID 放入 ClientHello 消息中,提交给服务器
  1. 服务器如果愿意恢复会话,将相同的会话 ID 放入 Server Hello 消息返回,使用之前协商的主密钥生成一套新密钥,切换到加密模式,发送完成信息
  1. 客户端收到会话已恢复的消息,也进行相同的操作,

TLS 1.3 建立新连接

  1. 在一次新的握手流程中,客户端不仅会发送 Client Hello 同时也会将支持的密码套件以及客户端密钥发送给服务端,相比于 TLS1.2,该步骤节约了一个 RTT
  1. 服务端发送 Server Hello ,服务端密钥和证书
  1. 客户端接收服务端发过来的信息,使用服务端密钥,同时检查证书完整性,此时加密连接已经建立可以发送 HTTP 请求,整个过程仅仅一个 RTT

TLS 1.3 0-RTT 会话恢复

TLS 1.2 中通过 1 个 RTT 即可完成会话恢复,那么 TLS 1.3 是如何做到 0 RTT 连接的?

当一个支持 TLS 1.3 的客户端连接到同样支持 TLS 1.3 的服务器时, 客户端会将收到服务器发送过来的 Ticket 通过相关计算,一起组成新的 预共享密钥,PSK (PreSharedKey)。客户端会将该 PSK 缓存在本地,在会话恢复时在 Client Hello 上带上 PSK 扩展,同时通过之前客户端发送的完成(finished)计算出恢复密钥 (Resumption Secret)通过该密钥加密数据发送给服务器。服务器会从会话 Ticket 中算出 PSK,使用它来解密刚才发过来的加密数据。

至此完成了该 0-RTT 会话恢复的过程。

以上简单描述了 TLS 1.3  建立连接的大致流程,也解释了为什么 TLS 1.3 相比于之前的 TLS 1.2 会有更出色的性能表现。

当然 TLS 1.3 还有非常非常多的细节以及安全特性,优点以及缺点(去除静态 RSA 和 DH 密钥协商、禁止 RC4、有副作用的 0-RTT握手存在重放攻击,不支持前向保密.....),限于篇幅并没有更深入的去探讨。

总结

TLS 1.3 将是 Web 性能以及安全的一个新的里程碑,随之 TLS1.3 带来的 0-RTT 握手,淡化了大家之前对使用 HTTPS 性能上的隐忧。于此同时,在未来随着 HTTP/2 的不断普及,强制性使用 HTTPS 成为了一种必然。

HTTPS 的推广也离不开一些公益性的组织,比如 Let‘s Encrypt

Let‘s Encrypt 推动了基础 DV HTTPS 证书的普及,让互联网上的中小站长和独立博客用户很容易的用上 HTTPS。而对于企业来说,DV 证书是不能满足要求的。需要信任等级更高、安全级别更强的企业型 SSL 证书(OV SSL)以及增强型SSL证书(EV SSL),相比于 DV 证书,后两者价格虽会更贵一些,而带来的安全性保证却是前者 DV 证书不能相比的。

SSL 证书是 HTTPS 中必不可少的一步,七牛云也于近日上线了一站式 SSL 证书申购服务,为更多的互联网企业以及个人开发者提供证书服务,也有为个人站长及开发者推出免费单域名 DV SSL 证书。

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/9692045.html

时间: 2024-10-08 02:41:44

[转帖]七牛云对HTTPS 的解释的相关文章

如何在WordPress中使用七牛云存储

序:七牛云存储可以方便的将网站的图片等数据镜像到七牛云存储的空间,直接从云端将数据返回给用户.这样可以大大节省网站的空间,提升网站的访问速度. 真正显示一键实现WordPress博客静态文件CDN加速.下面主要介绍一下WordPress中七牛云存储插件的使用. 一.申请七牛云存储的账号 首先需要申请七牛云存储的账号,申请好后,点击创建空间,选择空间类型为公开空间,提交 二.配置空间 配置空间,点击一键加速网站. 镜像源填写自己网站域名.确认加速. 这里的robots.txt配置文件内容为: #

小程序对接七牛云存储

前言: 做小程序有一段时间了,总结一下做过的技术点,特此贡献给小伙伴们!项目中,有图片存储.视频存储.录音存储这三个需要云对接存储. 一.图片/视频/录音上传七牛对接 准备工作: a.你要有一个七牛账号,实名认证后,在七牛的个人中心,有个秘钥管理-里面有一对秘钥,是上传必须的.这对秘钥,配置在后端,配置时可以设置允许上传格式,也可以设置为任何格式都可上传,让我们的后端大哥去慢慢弄吧.另外,还需要在七牛的对象存储里新建一个存储空间,所要上传的文件就是存储在你创建的空间里,如果你为了方便管理,也可以

七牛云--开发笔记

开发文档:https://developer.qiniu.com/kodo/sdk/1241/php 一.下载官方SDK : https://github.com/qiniu/php-sdk/releases?ref=developer.qiniu.com 下载源代码包后,解压到您的项目中. 然后在您的项目中引入 autoloader: 基本使用方法 安装好 SDK 后,接下来介绍如何使用 SDK.在使用 SDK 之前,需要注册一个七牛帐号,并登录控制台获取一对有效的AccessKey和Secr

七牛云 GO 语言周报【七月第 2 期】

全世界有多少 Gopher? 上周的周报中,我们介绍了 Go 语言的排名已经进入到前十.那么世界上到底有多少 Gopher 呢? 作者列出了以下计算公式: Gopher 数量 = 全世界的开发者数量 * 使用 Go 语言的软件占所有软件的比例 原文地址:https://research.swtch.com/gophercount Go1.9 有哪些值得关注的变化 还有不到一个月,Go 1.9版本也要正式发布了(计划 8 月份发布),当前 Go 1.9 的最新版本是 go1.9 beta2,本篇的

七牛云测试域名到期博客图片问题

从上周末开始到今天,终于把七牛云到期的测试域名所属空间的博客照片迁移到腾讯云.腾讯云有一定量免费空间供用户使用(发博文时免费额度:50 GB 标准存储容量,10 GB CDN 回源流量,100 万次读请求,100 万次写请求.费用实例),希望腾讯云短期内不要出对没钱用户的制裁条款.当然,出了我们也不用慌,再迁移便是,正所谓不折腾不舒服斯基.果然免费的都是要付出其它代价的- 备份七牛云图片到本地 方案一:如果此时你处在工作日时间,可以参考此链接教你如何在七牛云域名过期后备份内容完成转移,让七牛云技

上传图片到七牛云(服务端 node.js sdk)

大体思路 前端要上传图片到七牛云,需要有一个token进行授权操作,而获取这个上传的upload token(以下简称upToken),在服务端需要一定的身份校验,比如说:只有登录的vip用户才能拿到这个上传的token,才能往七牛云上传图片. 而服务端如何来生成这个upToken呢?以koa2为例,用最简洁的方式生成一个upToken.这里使用的是官方提供的node.js sdk.所谓sdk,就是软件开发工具包. 注意:这里我们上传的大体思路分为两步:第一,服务端颁发上传凭证到前端,前端携带凭

七牛云详细教程(包含与阿里云建立连接)

七牛云详细教程(包含与阿里云建立连接) 1.七牛云简介 不管是设计师,还是开发者,亦或是个人.公司.我们有时会需要将图片存在网络上,然后用链接来分享给他人.或是,用来给网站做图片外链,通过CDN加速,新浪.QQ.百度等等公司基本都做了防盗链,会知道我们分享出去的链接,其实他人根本看不到,那么为了解决这个问题,今天就来教大家用七牛云来申请一个,免费的个人储存空间,用来解决我们的需求 对于学生来说,他是很好的免费的资源存放地 2.注册 注册七牛云账号(可以领取免费的额度) 点击链接,注册七牛开发者账

如何让微信小程序快速接入七牛云

如果你确定用七牛运行小程序的话,给大家分享一个九折优惠码:61d1fd4d1 月 9 日 微信小程序正式发布,小程序终于揭开了它神秘的面纱,开发者对小程序的追捧更是热度不减.从小程序的热门应用场景来看,大概可以分为两大类,一类是低使用频率的 App,如金融类的银行或保险公司 App,O2O 类的上门做饭.家政 App:另一类是虽然使用频率高但是功能简单的 App,如工具类的天气.快递查询,富媒体类的资讯 App 等.那么,谁将成为小程序的大赢家?要打造独角兽级别的微信小程序,开发者除了要注重小程

新版CKeditor七牛云插件修改

新版CKeditor七牛云插件修改基于,CKeditor 4.6的源码,CKeditor新版支持从word复制内容直接上传了(IE9+),所以不需要之前的imagepaste老插件了.本来打算对上传的文件名做一个修改,避免同时拖入大量文件,导致文件名相同覆盖的情况,考虑到之前使用的是:Uinx时间戳_原文件名的方式,所以默认还是不修改.很多人觉得文件名对搜索引擎排名有提权作用,其实可以说是基本没有的,所以不用纠结文件名的问题. 新版的改动 1.升级到CKeditor 4.6源码,并且保留了CKe