阿里云CDN- https(设计支付宝春节开奖业务)
HTTP相关概念
1. HTTP概述
http是最广泛的网络协议,是客户端与服务器之间的请求与应答的标准(TCP),用于www服务器传输超文本到本地浏览器的传输协议,使浏览器更加高效,网络传输减少。
2.HTTPS概述
https是安全超文本协议(Hyper Text Transfer Protocol over Secure Socket Layer),安全为目标的HTTP通道(http的升级版),工作原理将http用SSL、TLS协议进行封装
分为:1. 建立一种一个信息安全通道 2.确认网站的真实性
3.SSL概述
ssl(Secure Sockets Layer)一个安全套接层,在TCP之上的安全协定,有效帮助internet提升通讯时的资料完整性及安全性;SSL改名为TLS(Transport Layer Security的缩写),传输层安全协议
- SSL:安全套接字
- TLS:安全传输层协议
HTTPS:HTTP +SSL/TLS
为什么要使用HTTPS?
- 可以防止网址被劫持,篡改;cherom等浏览器已被标记http不安全协议
- APPLE ATS要求ios的9.0以上的版本app使用HTTPS传输
- 主流服务器支持基于HTTP/2
- Google给使用了https的网站进行搜索加权
- 国内外网站已转向https
阿里CDN:承担支付宝春节开奖业务(设计)
证书管理
CDN HTTPS解决方案及优化实践
1.全链路支持HTTPS
两级节点的CDN架构中,client从l1节点到l2节点,再进行回到源站(三段 TCP连接,都支持https)第一段client到l1节点时,进行自己验证,第二段时用我们的证书(保证数据的加密),第三段(到源站的时候,也可以实现配置整个链路的https,保证网站内容的防篡改,及劫持)
需要用户将证书和私钥传到cdn的证书管理中心处理https请求
2.无私钥解决方案
针对自己的证书和私钥敏感很高的用户,将私钥保存在自己的服务器上,减少泄露的风险;这时候可以使用无私钥解决方案.
用户搭建私钥服务器,cdn与client之间产生了https握手的时候,cdn处理时候进行提取SNI,域名配置好之后,向私钥服务器(keyserver)请求签名或者解密钥的部分进行剥离出来,通过keyserver进行实现;阿里云实现自己的keyserver,用户只需要在自己的私服务器安装一个keyserver的rpm及配置即可
HTTP/2协议特性
HTTP2 是基于 HTTP 语义,它提供了一种优化传输机制。HTTP2 支持 HTTP1.1 所有核心特性,HTTP2 从以下几个方面进行了改进:
-
HTTP2 中最小的传输单元叫做帧。
-
HTTP2 定义了很多类型的帧,每个帧服务于不同的目的。
例如 HEADERS 和 DATA 帧就构成了 HTTP 请求和应答的主体。还有其它的比如 WINDOW_UPDATE, PUSH_PROMISE 等帧类型用于支持 HTTP2 的其它特性。 -
多路复用。每个 HTTP 请求/应答在各自的流(stream 也是 HTTP2 中的一个很重要概念)中完成数据交换。每个流都是相互独立。因此如果一个请求/应答阻塞或者速度很慢,也不会影响其它流中的请求/应答处理。在一个 TCP 连接中就可以传输多个流数据而无需建立多个连接。
流量控制和优先级机制。这个可以有效利用流的多路复用机制。 -
流量控制可以确保只有接收者使用的数据会被传输。优先级机制可以确保重要的资源被优先传输。
-
HTTP 增加了一种新的交互模式。即服务端可以推送应答给客户端。
-
HEAD 头数据压缩。因为 HTTP 头包含了大量冗余数据,HTTP2 对这些数据进行了压缩,压缩后对于请求大小的影响显著,可以将多个请求压缩到一个包中。
-
HTTP2 数据采用二进制编码,而不是原来的文本格式数据。
HTTP2 协议有两个标识符:
-
字符串 “h2” 标识使用了 TLS 的 HTTP2 协议。该标识符用在 TLS-ALPN 的扩展字段,以及其他需要标示运行于 TLS 之上 HTTP2 的地方。
-
字符串 “h2c” 标识在构建在 TCP 之上的 HTTP2 协议,它是明文传输。该标识符用在 HTTP/1.1 的 Upgrade 首部字段,以及其他需要标示运行于 TCP 之上 HTTP/2 的地方。“h2c” 字符串保留在 ALPN extension 标识符空间,但是实际上标示了一个不使用 TLS 的协议
-
二进制协议
-
头部压缩
HTTP 1.1 请求头的协议内容很多,而且大部分都是重复的。在 HTTP1.1 中每次请求都会大量携带这种冗余的头信息,浪费流量。
在 HTTP2 中,设计了 HPACK 压缩算法对头部协议内容进行压缩传输,这样不仅数据传输速度加快,也能节省网络流量。
HPACK 原理:
客户端和服务端共同维护了一份静态字典表(Static Table),其中包含了常见头部名及常见头部名称与值的组合的代码。
客户端和服务端根据先入先出的原则,共同维护了一份能动态添加内容的动态字典表(Dynamic Table)。
客户端和服务端支持基于静态哈夫曼码表的哈夫曼编码(Huffman Coding)
- 多路复用
HTTP1.1 和 HTTP2 的连接传输对比图:
HTTP1.1 中,请求 index.html 资源,响应完毕后就关闭连接了。
而在 HTTP2 中,请求完资源后,连接仍然是打开的,后面还可以继续使用这个连接通道传输数据。
上面是从资源传输的角度对比了 2 者的特性。
下面从 HTTP2 中 stream(流)角度来看看多路复用:
在一个 HTTP2 connection 中,客户端和服务端双方都能够向对方发送多个流数据(stream 1、stream 3、stram 5),在 HTTP2 中用这个 stream ID 来标识帧和流的对应关系。
- 服务器推送·
服务端推送的目的是让服务器通过预测它收到请求后有哪些相关资源需要返回,从而减少资源请求往返次数。
比如在 HTML 页面的请求后,通常是对该页面应用的样式表和脚本的请求,当这些资源被服务端直接推送给客户端时,客户端就不需要单独给服务器发送请求来获取这些资源了。
-
安全
-
https请求
-
CDN给keyserver发送代解密或者签名数据
-
keyserver相应
-
未命中时回源
-
源站响应
HTTPS升级
- TLS v1.2 握手协议简略交互图:
Client ServerClientHello -------->ServerHelloCertificate*ServerKeyExchange*CertificateRequest*<-------- ServerHelloDoneCertificate*ClientKeyExchangeCertificateVerify*[ChangeCipherSpec]Finished -------->[ChangeCipherSpec]<-------- FinishedApplication Data <-------> Application Data
在 RFC5246 中 7.4.1.2 小结的 TLS 的 Client Hello 结构:
struct {ProtocolVersion client_version;Random random;SessionID session_id;CipherSuite cipher_suites<2..2^16-2>;CompressionMethod compression_methods<1..2^8-1>;select (extensions_present) {case false:struct {};case true:Extension extensions<0..2^16-1>;};
} ClientHello;
在 HTTP2 的 APNE 扩展结构在 rfc7301 中第 3 小结也有定义:
A new extension type ("application_layer_protocol_negotiation(16)")
is defined and MAY be included by the client in its "ClientHello"
message.enum {application_layer_protocol_negotiation(16), (65535)
} ExtensionType;The "extension_data" field of the
("application_layer_protocol_negotiation(16)") extension SHALL
contain a "ProtocolNameList" value.opaque ProtocolName<1..2^8-1>;struct {ProtocolName protocol_name_list<2..2^16-1>
} ProtocolNameList;"ProtocolNameList" contains the list of protocols advertised by the
client, in descending order of preference. Protocols are named by
IANA-registered,opaque, non-empty byte strings, as described further
in Section 6 ("IANA Considerations") of this document
CDN HTTPS特性
- 动态证书,快速生效,全网1分钟
- 支持SPDY和HTTP/2
- 丰富的配置项,可动态设置
- 支持用户keyserver,实现无私钥服务
- 与阿里云证书中心CAS联动,可申请免费证书
优化方式
- 减少握手
- session ID、session ticket
- HTTP/2
- 头部压缩
- 多路复用
- 域名合并
- 减少SSL握手,提升重用
- 协议栈优化
- TCP初始化窗口
- 快速重传
- 优先算法
- ECDSA > RSA
峰值的应对
- Cache 系统预热
- 调度系统
- 预判峰值
- 热点地区统计,临近非热点地区分摊
- 依据节点能力按比例分配
- 限流
如何更好使用HTTPS
1.证书申请
证书类型:单域名、多域名还是泛域名?
2.申请渠道
阿里云CAS,其他厂商
签发Symantec,CFCA,Geo Trust证书
- DV 2. OV 3. EV
3.源站改造,支持https
- 页面资源:js、css,异步调用
- SSL/TLS:sni
- 优化配置:Session ID、Session Ticket
- 证书:SHA256,Sha-1
- HSTS:可以考虑强制使用HTTPS
相关文章:

阿里云CDN- https(设计支付宝春节开奖业务)
HTTP相关概念 1. HTTP概述 http是最广泛的网络协议,是客户端与服务器之间的请求与应答的标准(TCP),用于www服务器传输超文本到本地浏览器的传输协议,使浏览器更加高效,网络传输减少。 2.HTTPS概述 http…...

为何众多卖家选择加入亚马逊VC平台?他们的决策依据是什么?
众多卖家选择加入亚马逊VC平台,其背后蕴含着深思熟虑的决策逻辑。亚马逊VC平台作为一个专门为品牌供应商打造的销售平台,具有一系列独特且引人注目的优势。 首先,VC平台为卖家提供了品牌控制力的增强。在这个平台上,卖家能够更直接…...

Windows与Linux双机热备软件推荐
网络数据安全在如今信息化的时代越来越变得举足轻重,因此服务器维护和管理也成为企业健康稳定运营的一项重要工作。但实际情况是很多公司并没有配备专业的运维人员,一般都会通过一些管理软件维护或者主机托管给服务商。整理6款服务器的Windows与Linux双机…...

Mysql基础与安装
一、数据库的概念和相关的语法和规范 1、数据库的概念 数据库:组织,存储,管理数据的仓库。 数据库的管理系统(DBMS):实现对数据有效组织,管理和存取的系统软件。 数据库的种类: m…...

线程的死锁和并发安全
在多线程编程中,线程的死锁和并发安全是两个重要的概念。理解这两个概念并正确地管理它们,对于编写高效且可靠的并发程序至关重要。 线程的死锁 死锁(Deadlock) 是指两个或多个线程相互等待对方释放已经持有的资源,导…...

docker 启动提示can not create sys fs cgroup cpuset....问题处理
docker 启动失败 报错 大概报错内容为 cgroup :no such file can not create /sys/fs/cgroup/cpuset … 问题是因为 /sys/fs/cgroup/ 没有被正确挂载 cgroup 是实现资源限制的工具 docker 能够进行限制cpu 内存 大小 依赖cgroup ll /sys/fs/cgroup/ 发现一个都系也没有 m…...

[C/C++入门][ifelse]19、制作一个简单计算器
简单的方法 我们将假设用户输入两个数字和一个运算符(、-、*、/),然后根据所选的运算符执行相应的操作。 #include <iostream> using namespace std;int main() {double num1, num2;char op;cout << "输入 (,-,*,/): &quo…...

API取数实战:企业微信API取数教程
在数字化时代,企业微信不仅是一个通讯工具,更是企业数字化转型的重要平台。通过企业微信,企业能够高效连接员工、客户与合作伙伴,实现内部流程的自动化和智能化。本文将介绍企业微信API的应用场景和应用难点,并提供企业…...
AI算法18-最小角回归算法Least Angle Regression | LARS
最小角回归算法简介 最小角回归(Least Angle Regression, LAR)是一种用于回归分析的统计方法,它在某些方面类似于最小二乘回归,但提供了一些额外的优点。最小角回归由Bradley Efron等人提出,主要用于处理具有…...

wordpress 调用另外一个网站的内容 按指定关键词调用
要在WordPress中调用另一个网站的内容并根据指定关键词进行筛选,你可以使用以下代码。这段代码使用了WordPress内置的wp_remote_get函数来获取远程网站的内容,然后使用PHP的DOMDocument和DOMXPath类来解析HTML并筛选出包含指定关键词的内容。 首先&…...

kotlin数据类型
人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 Kotlin基本数值类型 基本数据类型包括 Byte、Short、Int、Long、Float、Double 整数类型 类型位宽最小值最大…...

[GWCTF 2019]babyvm
第一次接触VM逆向 先粘一下对我很有帮助的两篇佬的博客 系统学习vm虚拟机逆向_vmp 虚拟机代码逆向-CSDN博客 这篇去学习vm逆向到底是什么 我的浅显理解啊,就是和汇编的定义差不多,规定一个函数,用什么其他的名字 然后这道题 [GWCTF 2019]babyvm 详解 (vm逆向 …...

PyTorch论文
2019-12 PyTorch: An Imperative Style, High-Performance Deep Learning Library 设计迎合4大趋势: 1. array-based (Tensor) 2. GPU加速 3. 自动求导 (Auto Differentiation) 4. 拥抱Python生态 4大设计原则: 1. 使用算法和数据开发者熟悉的Python做编…...

【Python实战因果推断】37_双重差分8
目录 Diff-in-Diff with Covariates Diff-in-Diff with Covariates 您需要学习的 DID 的另一个变量是如何在模型中包含干预前协变量。这在您怀疑平行趋势不成立,但条件平行趋势成立的情况下非常有用: 考虑这种情况:您拥有与之前相同的营销数…...

【python学习】第三方库之matplotlib的定义、功能、使用场景和代码示例(线图、直方图、散点图)
引言 Matplotlib 是一个 Python 的 2D 绘图库,它可以在各种平台上以各种硬拷贝格式和交互环境生成具有出版品质的图形。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图、直方图、功率谱、条形图、错误图、散点图等 Matplotlib 是 …...

MySQL(3)表的操作
目录 1. 表的操作; 2. 数据类型; 1. 表的操作: 1.1 创建表: 语法: create table 表名( 属性 类型 [comment ], 属性 类型 [comment ], 属性 类型 ) character set 字符集 collate 校验集 engine 存储引擎; 前面博客提到: MyISAM和InoDB这两个比较重要. 1.2 查看表…...

SQL GROUPING运算符详解
在大数据开发中,我们经常需要对数据进行分组和汇总分析。 目录 1. GROUPING运算符概念2. 语法和用法3. 实际应用示例4. GROUPING运算符的优势5. 高级应用场景5.1 与CASE语句结合使用5.2 多维数据分析 6. 性能考虑和优化技巧7. GROUPING运算符的局限性8. 最佳实践9. GROUPING与其…...

在VS2017下FFmpeg+SDL编写最简单的视频播放器
1.下载ShiftMediaProject/FFmpeg 2.下载SDL2 3.新建VC控制台应用 3.配置include和lib 4.把FFmpeg和SDL的dll 复制到工程Debug目录下,并设置调试命令 5.复制一下mp4视频到工程Debug目录下(复制一份到*.vcxproj同一目录,用于调试) 6…...

LogViewer v2.x更新
logvewer 介绍 logviewer 是一个可以方便开发人员通过浏览器查看和下载远程服务器集群日志,使用ssh方式管理远程tomcat、jar包等应用,节省服务器资源。大家可以下载体验,请勿用于生产环境。欢迎提出意见或建议。 解决的问题 一般情况下公司…...

detection_segmentation
目标检测和实例分割(OBJECT_DETECTION AND INSTANCE SEGMENTATION) 文章目录 目标检测和实例分割(OBJECT_DETECTION AND INSTANCE SEGMENTATION)一. 计算机视觉(AI VISION)1. 图像分类2. 目标检测与定位3. 语义分割和实例分割目标检测算法可以分为两大类: R-CNN生成…...

0基础学python-13:古希腊掌管时间的模块——datetime和time
目录 前言 datetime模块 一、datetime 类 1.创建 datetime 对象 2.获取日期时间的各个部分 3.格式化日期时间为字符串 4.解析字符串为 datetime 对象 二、timedelta 类 1.创建 timedelta 对象 datetime注意事项 time模块 1.获取当前时间戳 2.获取当前时间的结构化表…...

棒球特长生升学具有其独特的优势和劣势·棒球6号位
棒球特长生升学具有其独特的优势和劣势,以下是对这两方面的详细分析: 获得更好的教育资源: 棒球特长生有机会通过棒球特长招生计划进入更好的学校。这些学校往往拥有更优质的教育资源,包括师资力量、教学设施、课程设置等&#…...

搜维尔科技:Xsens DOT 可穿戴传感器介绍及示例应用演示
Xsens DOT可穿戴传感器介绍及示例应用演示 搜维尔科技:Xsens DOT 可穿戴传感器介绍及示例应用演示...

数据分析案例-2024 年热门动漫数据集可视化分析
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...

C#小结:未能找到类型或命名空间名“xxx”(是否缺少 using 指令或程序集引用?)
方案一:移除类库这些失效的引用,下载对应版本的dll(如有则不需要重复下载),重新添加引用 方案二:类库右键属性-调整目标框架版本(一般是降低版本) 方案三:调整类库编译顺…...

STM32智能无人机控制系统教程
目录 引言环境准备智能无人机控制系统基础代码实现:实现智能无人机控制系统 4.1 数据采集模块 4.2 数据处理与控制算法 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:无人机管理与优化问题解决方案与优化收尾与总结 1. 引言 智能无人机控…...

从 QWebEnginePage 打印文档
QWebEnginePage 是 Qt WebEngine 模块中的一个类,它提供了用于处理网页内容的接口。如果你想要打印 QWebEnginePage 中的内容,你可以使用 QPrinter 和 QPrintDialog 类来实现。 项目配置了 Qt WebEngine 模块,并且在你的.pro文件中包含了相应…...

初识Docker及管理Docker
Docker部署 初识DockerDocker是什么Docker的核心概念镜像容器仓库 容器优点容器在内核中支持2种重要技术:Docker容器与虚拟机的区别 安装Docker源码安装yum安装检查Docker Docker 镜像操作配置镜像加速器(阿里系)搜索镜像获取镜像查看镜像信息…...

【学术会议征稿】2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024)
2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024) 2024 3rd International Conference on Informatics,Networking and Computing (ICINC 2024) 2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024)将于2024年10月25-27日于中国郑州召…...

在golang中Sprintf和Printf 的区别
最近一直在学习golang这个编程语言,我们这里做一个笔记就是 Sprintf和Printf 的区别 fmt.Sprintf 根据格式化参数生成格式化的字符串并返回该字符串。 fmt.Printf 根据格式化参数生成格式化的字符串并写入标准输出。由上面就可以知道,fmt.Sprintf返回的…...