HTTPS 与 HTTP 不同,其在传输层与应用层之间添加了一个 SSL/TLS 的安全层.
机制:所有的 HTTP 请求与响应都要通过 SSL/TLS 先进行加密,再进行传输.

基础知识

密码 cipher:

一套编码的算法,用于编码和以后解码的结合体
工作原理: 通过算法将 plaintext 编码为 ciphertext

密钥 key:

改变密码的工作方式的数字化参数,从而使得密码机有不同的行为.
数字密钥:数字密钥是编/解码算法的数字化参数
工作原理:一个加密算法可产生众多的虚拟加密算法,每一种算法即为一种密钥.

对称密钥技术

定义:在编码时使用的密钥和解码时使用的密钥相同
缺陷:在发送着与接受者互相对话之前,一定要有一个共享密钥;若有 N 个节点进行相互之间的安全对话,那么总共需要的保密密钥数量庞大,不便于管理.

公开密钥加密技术

定义:编码的密钥为公开密钥,所有人都可以对其进行编码;解码的密钥称为私有密钥,只有其私有者惨鞥够对报文进行解码
功能:

  1. 在安全协议下全球范围内发送报文
  2. 解决了对称密钥数量庞大的问题

数字签名

定义:数字签名是用来验证报文未被伪造或篡改的校验和.
机制:

  1. 证明身份:作者拥有私有密钥,因此只有作者能计算出校验和
  2. 防止篡改:当报文被恶意攻击,进行修改了之后,无法计算出正确的校验和

流程:
发送端:

  1. 报文转变为摘要
  2. 应用私有密钥的加密算法对摘要编码,计算出数字签名

接受端:

  1. 接收到明文报文与签名
  2. 把接受到的明文报文计算出其报文摘要 ,同时将签名通过公共密钥的反函数计算出其报文摘要
  3. 将两报文摘要进行对比

数字证书

定义:在 HTTPS 建立一个安全事务之后,浏览器获取其数字证书,它的内容基本如下:

  1. Web 站点的名称和主机名
  2. Web 站点的公开密钥
  3. 签名颁发机构的名称
  4. 数字签名

浏览器会对证书内容进行检查:

  1. 签名颁发机构可信度
  2. 日期检测
  3. 签名检测
  4. 站点身份检测

通过这些检测来判断是否信任这一证书.

SSL 握手

机制:在 HTTPS 中,客户端首先打开一条到 443 服务端口的连接.之后就会初始化 SSL 层,对加密参数进行沟通,并交换密钥.这个流程叫做「握手」,握手完成之后, SSL 初始化就完成了.

握手基本流程如下:

  1. 客户端发送可供选择的密码并请求证书
  2. 服务器发送选中的密码和证书
  3. 客户端发送保密信息;客户端与服务器生成密钥
  4. 客户端与服务器交换密钥,互相告知

《HTTP 权威指南》笔记:第十四章 安全 HTTP的更多相关文章

  1. Gradle 1.12用户指南翻译——第二十四章. Groovy 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  2. 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据

    相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...

  3. C primer plus 读书笔记第十四章

    这一章主要介绍C语言的结构和其他数据形式,是学习算法和数据结构的重点. 1.示例代码 /*book.c -- 仅包含一本书的图书目录*/ #include <stdio.h> #defin ...

  4. 学习笔记 第十四章 使用CSS3动画

    第14章   使用CSS3动画 [学习重点] 设计2D动画 设计3D动画 设计过渡动画 设计帧动画 能够使用CSS3动画功能设计页面特效样式 14.1  设计2D动画 CSS2D Transform表 ...

  5. Linux 笔记 - 第十四章 LAMP 之(一) 环境搭建

    博客地址:http://www.moonxy.com 一.前言 LAMP 是 Linux Apache MySQL PHP 的简写,即把 Apache.MySQL 以及 PHP 安装在 Linux 系 ...

  6. Linux 笔记 - 第二十四章 配置 Tomcat

    一.前言 Tomcat 是 Apache 软件基金会(Apache Software Foundation)Jakarta 项目中的核心项目,由 Apache.Sun 和其他一些公司及个人共同开发.使 ...

  7. 《linux程序设计》--读书笔记--第十四章信号量、共享内存和消息队列

    信号量:用于管理对资源的访问: 共享内存:用于在程序之间高效的共享数据: 消息队列:在程序之间传递数据的一种简单方法: 一.信号量 临界代码:需要确保只有一个进程或者一个执行线程可以进入这个临界代码并 ...

  8. [HeadFirst-HTMLCSS学习笔记][第十四章交互活动]

    表单 <form action="http://wickedlysmart.com/hfhtmlcss/contest.php" method="POST" ...

  9. 《JS权威指南学习总结--第四章4.9.1相等和严格相等》

    内容要点:       一. 严格相等运算符"==="  首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换:            1.如果两个值类型不同,则它们不 ...

随机推荐

  1. 最全的MonkeyRunner自动化测试从入门到精通(3)

    一.eclipse的下载安装与配置成安卓开发环境 步骤一:在官网上面进行下载eclipse,官网的网址:https://www.eclipse.org/downloads/ 步骤二:下载完成后可以在你 ...

  2. 《Mysql 数据类型》

    一:整型 - 常用类型 类型 占用(字节) 范围 无符号范围 无符号范围 TINYINT 2的8次方 - — — SMALLINT 2的15次方 - — 6553 5 INT 2的31次方 - — 4 ...

  3. iptables 分析(三)

    原文:http://blog.chinaunix.net/uid-24207747-id-2622902.html find_target查到目标并加载成功,返回一个xtables_target型对象 ...

  4. ES6 数组

    数组创建 Array.of() 将参数中所有值作为元素形成数组. console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4] // 参数值可为不同类型 con ...

  5. 初学Vue 遇到Module not found:Error:Can`t resolve 'less-loader' 问题

    学习vue时,导入一个子组件时遇到Module not found:Error:Can`t resolve 'less-loader' 问题,实际上时在子组件中的样式里加了这么个代码 <styl ...

  6. java框架之SpringBoot(11)-缓存抽象及整合Redis

    Spring缓存抽象 介绍 Spring 从 3.1 版本开始定义了 org.springframework.cache.Cache 和 org.springframework.cache.Cache ...

  7. nodejs 之=> 函数

    基本用法: ES6中允许使用“箭头”(=>)定义函数 var f = v => v; 上面代码相当于定义了一个函数 f : var f = function(v){ return v; } ...

  8. [js]js中类的继承

    凡事总有个开端,也有个tag节点(里程碑).阶段性的划分总结,是一种对精神的慰藉,否则精神就像野马一样,会放弃,会累死. 继承: 子类原型指向父类一个实例 类的继承-模拟系统类 Object -> ...

  9. IdentityServer4授权和认证对接数据库

    接着上一篇讲:https://www.cnblogs.com/nsky/p/10352678.html 我们之前都是用in-men的方式把数据添加到内存了,目的是为了测试方便, 现在我们把所有配置都添 ...

  10. 斐讯面试记录—TCP滑动窗口及拥塞控制

    TCP协议作为一个可靠的面向流的传输协议,其可靠性是由流量控制和滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现. 一.滑动窗口协议 1. “窗口”对应的是一段可以被发送者发送的字节序 ...