文章目录

  • WEB结构组件: 客户端 服务器 代理 缓存 网关 隧道 Agent代理
  • https: http+SSL/TLS
    • https 握手
    • SNI: Server Name Indication
    • 主机壳http调度

WEB结构组件: 客户端 服务器 代理 缓存 网关 隧道 Agent代理

  • client:
  • server:
  • prox: 客户端和服务器之间的HTTP中间实体
    位于客户端和服务器之间,接收所有客户端的HTTP请求,并将这些请求转发给服务器(可能会对请求进行修改之后转发)
  • cache: HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方
  • gateway: 连接其他应用程序的特殊Web服务器
    作为其他服务器的中间实体使用。通常用于将HTTP流量转换成其他的协议
  • tunnel: 对HTTP通信报文进行 盲转发的特殊代理
    通常用来在一条或多条HTTP连接上转发非HTTP数据,转发时不会窥探数据
  • Agent: 发起 自动HTTP请求的半智能Web客户端

https: http+SSL/TLS

https报文在被包装成tcp报文的时候完成加密的过程,无论是https的header域也好,body域也罢都是会被加密的。当使用tcpdump或者wireshark之类的tcp层工具抓包,获取是加密的内容,而如果用应用层抓包,使用Charels(Mac)、Fildder(Windows)抓包工具,那当然看到是明文的。

https 握手

  1. 客户端发起HTTPS请求

  2. 服务端的配置

    采用HTTPS协议的服务器必须要有一套数字证书,可以是自己制作或者CA证书。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用CA证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。公钥给别人加密使用,私钥给自己解密使用。

  3. 传送证书即公钥

    这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等。

  4. 客户端解析证书

    这部分工作是客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就 生成一个随机值(私钥),然后用证书对该随机值进行加密

  5. 传送加密后的随机值

    这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后 客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  6. 服务段解密信息

    服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后 把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

  7. 传输加密后的信息

    这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

  8. 客户端解密信息

    客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。

SNI: Server Name Indication

ref: https://blog.csdn.net/makenothing/article/details/53292335

SNI (Server Name Indication)是用来改善服务器与客户端 SSL (Secure Socket Layer)和 TLS (Transport Layer Security) 的一个扩展。主要解决一台服务器只能使用一个证书(一个域名)的缺点,随着服务器对虚拟主机的支持,一个服务器上可以为多个域名提供服务,因此SNI必须得到支持才能满足需求。

SNI的设计目的是为了让服务器根据请求来决定为哪个域服务,这个信息通常从HTTP请求头获得。

有了 SNI 扩展,在第一步发起 HTTPS 连接的时候,客户端将会发送对应的域名给服务器的 443 端口。服务器收到之后检查对应域名的证书返回给客户端完成支持。

主机壳http调度

在标准 Nginx 中,都是通过配置文件的方式实现的证书载入和更新。但是作为 CDN 厂商我们是无法容忍 reload 的。因此我们二次开发 Nginx 完成动态证书支持,将 证书和私钥全部存放到 CDN 节点的内存中,当用户请求 Hostker&主机壳 的 CDN 时,我们不需要查询配置文件,直接读取域名并在内存中找到对应的证书和私钥完成握手过程。

用户对某个域名进行增加、删除证书和私钥操作时,我们会直接把对应操作下发到全网 CDN 节点,直接操作内存进行修改。同样不需要接触 Nginx 的配置文件,节省的 reload 过程可以让操作生效时间非常短,通常在 1 分钟内就可以完成全网部署。

http-杂货铺.md相关推荐

  1. TVM示例展示 README.md,Makefile,CMakeLists.txt

    TVM示例展示 README.md,Makefile,CMakeLists.txt TVM/README.md Open Deep Learning Compiler Stack Documentat ...

  2. Openfire XMPP Smack RTC IM 即时通讯 聊天 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  3. VC运行时库(/MD、/MT等)

    VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT).多线程调试(/MTd).多线程DLL(/MD).多线程调试DLL(/MDd).单线程(/ML).单线程调试( ...

  4. github README.md教程

    github README.md教程 总结 github中README.md通过特殊字符标记和缩进来达到格式控制,也可以用HTML标签来实现格式控制. 教程一: Markdown 的目标是实现「易读易 ...

  5. GitHub上README.md教程

    http://blog.csdn.net/kaitiren/article/details/38513715 最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文 ...

  6. html导入.md文件并渲染,vue 导入.md文件(markdown转HTML)

    前言 刚接到这个需求的时候,觉得很简单(的确很简单)但是这玩意的坑真的也让人无奈. 网上找了很多的资料,都没有写出痛点(这就很难过了).通过实践并且在我们项目中平稳运行,想分享给后面的人 我的博客上也 ...

  7. GROMACS运行参数之md.mdp文件详解

    GROMACS(5.1.4)教程:蛋白质配体复合物 官网:点击打开链接 李老师博客:点击打开链接 蛋白质配体复合物模拟md运行过程中需要用到输入文件md.mdp,现对里面的各种编辑项目做简单注释. # ...

  8. Materials Studio 做分子动力学MD(CO2为例)

    1.新建CO2模型 (1)首先在MS中新建一个项目,命名为MD,然后把CO2的.pdb文件拖进来,.pdb文件可以根据GaussianView得到,百度也搜得到. (2)然后建立块体.点击Module ...

  9. android md风格Switch,带有图标动画和颜色转换的Switch – material...

    Material Animated Switch 一个MD风格的Switch,带有图标动画和颜色转换. 如何使用 默认情况下显示收件箱锁定开关 android:id="@+id/pin&qu ...

  10. github用相对路径显示图片_url-图像未显示在GitHub的README.md中

    更新内容 自2013年1月30日起,GitHub现在支持标记文档中的相对链接. 这意味着您的代码.md现在可以正常工作. 正如@Brad指出的那样,这还可以缓解以下情况:两个分支中的图像不同,但具有相 ...

最新文章

  1. ecshop模板的原理分析
  2. Hadoop(Install)
  3. Spring JDBC Template
  4. 小小的改进,逻辑运算
  5. C#中的值类型和引用类型
  6. “冷潮”之后,P2P或更加适合投资
  7. 神策数据受邀参加第五届中国全渠道峰会,聚焦大数据驱动线上线下融合
  8. 鸿蒙智慧屏电视,鸿蒙os全面推送,立刻买了一台华为智慧屏电视s pro65
  9. 用kali的Meterpreter控制win10,可以偷看你的电脑的所有数据
  10. Jquery Ajax 登录,服务端分别为 aspx,ashx,asmx
  11. 无限级分类及生成json数据
  12. 超简单开发自己的php框架一点都不难
  13. vs code linux 权限,在linux系统中安装VSCode(Visual Studio Code)
  14. Android利用canvas画画板
  15. Daily Scrum8, Oct. 12th
  16. 线程并发安全导致内存溢出
  17. Vue项目实现web端飘窗
  18. Ubuntu20.4安装gnuradio艰辛之路
  19. 网件RAX120刷机教程
  20. js 幻灯片放映图片_20个响应式图像库和幻灯片放映(2018)

热门文章

  1. linux可执行文件怎么打开代码,linux可执行文件的加载和运行(转)
  2. DevExpress控件学习总结 z
  3. 市面上有哪几种门_市面上的木门分类常识
  4. python权重是什么意思_在python带权重的列表中随机取值的方法
  5. 活动二维码怎么制作?如何将活动内容做成二维码图片?
  6. YOLOv5数据集划分脚本(train、val、test)
  7. 怎样在网站网页中插入音乐?
  8. 通过写n本书的积累,我似乎找到了写好技术文章的方法(回复送我写的python股票电子书)
  9. CDA数据分析师携手万宝盛华开启人才培训新篇章
  10. 速卖帮AI点餐流程 AI菜品识别结账