阿里云CDN- https(设计支付宝春节开奖业务)

news2024/11/13 18:01:48

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?

  1. 可以防止网址被劫持,篡改;cherom等浏览器已被标记http不安全协议
  2. APPLE ATS要求ios的9.0以上的版本app使用HTTPS传输
  3. 主流服务器支持基于HTTP/2
  4. Google给使用了https的网站进行搜索加权
  5. 国内外网站已转向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                                               Server

      ClientHello                  -------->
                                                      ServerHello
                                                     Certificate*
                                               ServerKeyExchange*
                                              CertificateRequest*
                                   <--------      ServerHelloDone
      Certificate*
      ClientKeyExchange
      CertificateVerify*
      [ChangeCipherSpec]
      Finished                     -------->
                                               [ChangeCipherSpec]
                                   <--------             Finished
      Application 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. 动态证书,快速生效,全网1分钟
  2. 支持SPDY和HTTP/2
  3. 丰富的配置项,可动态设置
  4. 支持用户keyserver,实现无私钥服务
  5. 与阿里云证书中心CAS联动,可申请免费证书

优化方式

  1. 减少握手
  • session ID、session ticket
  1. HTTP/2
  • 头部压缩
  • 多路复用
  1. 域名合并
  • 减少SSL握手,提升重用
  1. 协议栈优化
  • TCP初始化窗口
  • 快速重传
  1. 优先算法
  • ECDSA > RSA

峰值的应对

  • Cache 系统预热
  • 调度系统
    • 预判峰值
    • 热点地区统计,临近非热点地区分摊
    • 依据节点能力按比例分配
  • 限流

如何更好使用HTTPS

1.证书申请

证书类型:单域名、多域名还是泛域名?

2.申请渠道

阿里云CAS,其他厂商
签发Symantec,CFCA,Geo Trust证书

  1. DV 2. OV 3. EV

3.源站改造,支持https

  • 页面资源:js、css,异步调用
  • SSL/TLS:sni
  • 优化配置:Session ID、Session Ticket
  • 证书:SHA256,Sha-1
  • HSTS:可以考虑强制使用HTTPS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1930510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【总结】实际业务场景中锁、事务、异常如何考虑使用?

文章目录 锁处理目的&#xff1a;考虑锁控制思路&#xff1a;生命周期接口并发控制解决方案&#xff1a;测试锁是否生效&#xff1a;模拟多线程并发场景的2种方式&#xff1a; 事务处理目的&#xff1a;考虑事务控制思路&#xff1a;解决方案&#xff1a; 总结 锁处理 目的&am…

集群架构-web服务器(接入负载均衡+数据库+会话保持redis)--15454核心配置详解

紧接着前面的集群架构深化—中小型公司&#xff08;拓展到大型公司业务&#xff09;–下面图简单回顾一下之前做的及故障核心知识总结&#xff08;等后期完全整理后&#xff0c;上传资源希望能帮大家&#xff09; web集群架构-接入负载均衡部署web02服务器等 web集群-搭建web0…

[C++]一些list,stack和queue选择题和编程题

这时我们学完后的应用 一、选择题 1.下面有关vector和list的区别&#xff0c;描述错误的是( ) A.vector拥有一段连续的内存空间&#xff0c;因此支持随机存取&#xff0c;如果需要高效的随机存取,应该使用vector B.list拥有一段不连续的内存空间&#xff0c;如果需要大量的插入…

JavaScript基础(十四)

函数 很多人一看到这两个字就头大&#xff0c;可能由于多年被数学摧残有不小阴影&#xff0c;放心&#xff0c;我们这里的函数不是那些东西&#xff0c;在编程中我们的函数指的是: 程序的基本单元&#xff0c;是完成特定任务的代码语句块。 我们在写程序时&#xff0c;可能会…

【RAG探索第4讲】KG+RAG丨基于知识图谱优化大型语言模型方法

原文链接&#xff1a;【RAG探索第4讲】KGRAG丨基于生物医学知识图谱优化的大型语言模型提示生成方法 一、现有问题&#xff1a; LLMs在处理特定领域或高度专业化查询时缺乏专业知识&#xff0c;导致回答不够准确和可靠。 LLMs可能会产生事实错误&#xff08;即幻觉&#xff0…

【整洁单元测试】测试气味Test Smells

背景 "Code smell" 是软件开发中的一个术语&#xff0c;指的是代码中可能表明存在问题的某些迹象或模式。这些迹象本身并不表示代码一定有错误&#xff0c;但它们通常表明代码可能难以理解、维护或扩展。Code smells 可以视为一种警告&#xff0c;提示开发者需要进一…

0基础学python-14:python进阶之面向对象

前言 Python是一门解释型、面向对象以及动态数据类型的高级程序设计语言&#xff0c;今天所要说的就是极为重要的概念&#xff0c;面向对象。 一、面向对象的核心概念&#xff1a; 1.类&#xff08;Class&#xff09;&#xff1a; 类是对象的抽象描述&#xff0c;是面向对象编…

HarmonyOS开发中几个常见问题

前言 最近开始HarmonyOS应用开发&#xff0c;遇到一些小问题&#xff0c;也算是自己看官网文档没记住的东西&#xff0c;过程中再记录一下。 一、更改应用的名字和图标 对比看下Android工程中是如何更改的&#xff0c;只需要在清单文件AndroidManifest.xml中&#xff0c;更改…

机器学习 | 深入理解激活函数

什么是激活函数&#xff1f; 在人工神经网络中&#xff0c;节点的激活函数定义了该节点或神经元对于给定输入或一组输入的输出。然后&#xff0c;将此输出用作下一个节点的输入&#xff0c;依此类推&#xff0c;直到找到原始问题的所需解决方案。 它将结果值映射到所需的范围…

CSS综合案例(快报模块头部制作)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 一、前述 二、案例分析 1.样例参看 2.拆分分析 三、案例实施 一、前述 案例&#xff1a;快报模块头部制…

微信小程序基本语法

官网 https://developers.weixin.qq.com/miniprogram/dev/framework/ 视频教程&#xff1a;尚硅谷微信小程序开发教程&#xff0c;2024最新微信小程序项目实战&#xff01; 仿慕尚花坊项目源码&#xff1a;https://gitee.com/abcdfdewrw/flower-workshop 目录 一&#xff0c;初…

热门软件缺陷管理工具2024:专业评测与建议

国内外主流的10款软件缺陷管理工具软件对比&#xff1a;PingCode、Worktile、禅道、Tapd、Teambition、Tower、JIRA、Bugzilla、MantisBT、Trac。 在软件开发过程中&#xff0c;管理缺陷和漏洞常常成为一项挑战&#xff0c;尤其是在项目规模庞大时。选择一个高效的软件缺陷管理…

C#实现自定义标签的设计和打印

背景:最近在进行资产盘点的时候,需要对固定资产设计标签并进行打印。 设计标签:选用的是Fastreport自带的,可拆包忌用的标签设计器;进行标签的模型设计。 软件解压后可直接进行使用。模板的设计基本都是无脑操作,拖拽控件按,放置到固定未知即可;我设计的模板如下: 说…

Vision Pro的增强视觉:企业级Unity插件包实现主摄像头访问

在AR和VR技术的快速发展中,Unity作为跨平台游戏和应用开发的首选引擎,其插件生态的丰富性一直是开发者们关注的焦点。最近,一个专为Vision Pro设计的Unity插件包——EnterpriseCameraAccessPlugin,因其能够通过企业API访问主摄像头的功能,引起了广泛关注。 一、插件背景与…

springboot+vue+mybatis鲜花管理系统+PPT+论文+讲解+售后

随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;鲜花管理系统当然也不能排除在外。鲜花管理系统是以实际运用为开发背景&#xff0c;运用软件工程开发方法&#xff0c;采用SSM技…

小阿轩yx-zookeeper+kafka群集

小阿轩yx-zookeeperkafka群集 消息队列(Message Queue) 是分布式系统中重要的组件 通用的使用场景可以简单地描述为 当不需要立即获得结果&#xff0c;但是并发量又需要进行控制的时候&#xff0c;差不多就是需要使用消息队列的时候。 消息队列 什么是消息队列 消息(Mes…

前端框架入门之Vue _el和data的两种写法 分析MVVM模型

目录 _el与data的两种写法 MVVM模型 _el与data的两种写法 查看vue的实例对象 我们在这边注释掉了el属性 这样的话div容器就绑定不了vue实例 当我们可以在这里写一个定时任务 然后再回头指定 这个mount有挂载的意思 就是把容器对象交给vue实例后 去给他挂载指定的对象 &…

MySQL 进阶(四)【锁】

1、锁 1.1、锁的概述 锁就不需要多介绍了&#xff0c;多个用户访问共享数据资源&#xff0c;如何保证数据并发访问的一致性、有效性是数据库最重要的问题。同时&#xff0c;锁冲突也是影响一个数据库并发性能最重要的因素。 MySQL 中锁的划分有三类&#xff1a; 全局锁&…

敏捷营销在AI智能名片微信小程序中的应用探索

摘要&#xff1a;在数字化转型的浪潮中&#xff0c;企业面临着前所未有的挑战与机遇。AI智能名片微信小程序作为一种创新的营销工具&#xff0c;以其便捷性、智能化和高效性&#xff0c;正逐步成为企业连接客户、推广品牌的新宠。然而&#xff0c;如何在快速变化的市场环境中&a…

Automation Anywhere推出新一代AI+自动化企业系统,助力企业实现10倍商业增长

RPA厂商纷纷进军AI Agent ( AI 代理)领域&#xff0c;陆续推出创新产品。最近&#xff0c;Automation Anywhere宣布推出其新的AI 自动化企业系统&#xff0c;该系统结合AI和自动化技术&#xff0c;以实现指数级的业务成果。 在Imagine 2024大会上首次亮相的这款新产品&#xf…