Https

Https其实是两个协议,即HTTP协议和SSL协议,但是由于HTTP协议应用广泛,而且需要为其提供数据隐私保护,所以将HTTP协议与SSL协议结合。HTTP属于应用层,在远古时代,它只需将自己的数据提交给TCP层即可,先在它需要将自己的数据提交给SSL层,而SSL对数据进行加密后提交TCP层。

这里主要介绍SLL协议

需求

CA证书:由可信赖的机构(CA)颁发
SSL协议主要解决数据加密传输的问题
数据加密:加密算法,密钥,所以使用SSL协议时需要协商加密算法,交换密钥
算法可以公开但是密钥要安全交换------DH密钥交换算法(DH密钥交换算法存在中间人攻击,所以需要用证书来进行身份认证)
SSL完成以上的任务才能完成最终的加密操作

内容介绍

SSL协议包括握手协议,记录协议,警报三个子协议

握手协议

第一阶段:客户端发送SSL版本号,一个随机数,自己能支持的加密算法,服务器发送自己的证书,一个随机数
第二阶段:客户端生成一个新的随机数,用服务器证书中公钥进行加密,将其发给服务器。服务器获取随机数。
第三阶段:双方使用上面出现的三个随机数生成会话密钥,后面的数据使用会话密钥进行加密传输

问题

客户端发送支持的加密算法,其实是一个套件(suites),该套件中包含了客户端支持的所有加密算法,服务器会从中选一个,在第一阶段时发送客户端

上面提到用DH进行密钥交换,其实交换的是第三个随机数,默认情况下是用RSA加密进行随机数传输的,如果客户端只支持DH时,可以通过DH交换产生第三个随机数。

HTTPS复习的更多相关文章

  1. 转载请注明出处: https://github.com/qiu-deqing/FE-interview

    转载请注明出处: https://github.com/qiu-deqing/FE-interview Table of Contents generated with DocToc FE-inter ...

  2. Wireshark抓包分析/TCP/Http/Https及代理IP的识别

    前言 坦白讲,没想好怎样的开头.辗转三年过去了.一切已经变化了许多,一切似乎从没有改变. 前段时间调研了一次代理相关的知识,简单整理一下分享之.如有错误,欢迎指正. 涉及 Proxy IP应用 原理/ ...

  3. JS复习--更新结束

    js复习-01---03 一 JS简介 1,文档对象模型 2,浏览器对象模型 二 在HTML中使用JS 1,在html中使用<script></script>标签 2,引入外部 ...

  4. javase基础复习攻略《一》

    作为一名软件工程专业,JAVA开发方向的大三本科学生,有必要把自己的学到的专业知识进行一下整理,一则方便自己了解自己的学习程度,二则帮助刚刚接触这一门语言的童鞋了解学习,本人来自与河南理工大学,介绍完 ...

  5. C#复习④

    C#复习④ 2016年6月16日 12:37 Main Classes and Structs 类和结构体 1.Contents of Classes 字段,常量,方法,构造函数,析构函数: 特性,事 ...

  6. Android复习资料

    转载:http://blog.csdn.net/huachao1001/article/details/53156582 在10月份开始就没有再参与校招了,面试过程真的很累,有时现场等面试一等就是几个 ...

  7. php复习

    最近要用php,好久不用感觉手生.抓起<零基础学PHP>一书复习了下,顺带学了smarty模板语言,然后到慕课网看了些php中级视频教程,这里记录下. php最基本的文件上传 不用任何第三 ...

  8. html 复习

    通过几次修改网页的经历,发现相关基础知识之薄弱,不得不再次花时间复习一遍.希望这是最后一次. 一 通用声明 HTML5 <!DOCTYPE html> HTML 4.01 <!DOC ...

  9. 在Jenkins中使用Git Plugin访问Https代码库失败的问题

    最近需要在Jenkins上配置一个Job,SCM源是http://git.opendaylight.org/gerrit/p/integration.git 于是使用Jenkins的Git Plugi ...

随机推荐

  1. AWS系列-Amazon Simple Notification Service (SNS)

    SNS是一项 Web 服务,用于协调和管理向订阅终端节点或客户交付或发送消息的过程.在 Amazon SNS 中有两种类型的客户端:发布者和订阅者,也称为生产者和消费者.发布者通过创建消息并将消息发送 ...

  2. iOS文件路径相关的方法

    文件路径相关的方法在NSPathUtilities中,主要是操作路径 获得一个路径 NSString *documents = [NSSearchPathForDirectoriesInDomains ...

  3. Python学习笔记5-元组Tuple

    tuple和list非常类似,但是tuple一旦初始化就不能修改,它也没有append(),insert()这样的方法.其他获取元素的方法和list是一样的 元组是用圆括号括起来的,其中的元素之间用逗 ...

  4. C++变量命名方案

    变量命名方案和函数命名方案一样,也有很多话题可供讨论.确实,该主题会引发一些最尖锐的反对意见.同样,和函数名称一样,只要变量名合法,C++编译器就不会介意,但是一致/精确的个人命名约定是很有帮助的.与 ...

  5. jfinal如何调用存储过程?

    存储过程用一下 Db.execute(ICallback) 这个方法,在其中用一下:connection.prepareCall(sql).execute();就可以调用存储过程了,并且还可以自由控制 ...

  6. NSArray最简单的倒序

    NSArray里有 sortedArrayUsingSelector:等排序的方法,但是最简单的倒序排列的方法如下: NSArray *deArray = [[keyArrays reverseObj ...

  7. 使用Standford coreNLP进行中文命名实体识别

    因为工作需要,调研了一下Stanford coreNLP的命名实体识别功能. Stanford CoreNLP是一个比较厉害的自然语言处理工具,很多模型都是基于深度学习方法训练得到的. 先附上其官网链 ...

  8. print文档

    文档 def print(self, *args, sep=' ', end='\n', file=None): # known special case of print ""& ...

  9. git学习------>如何汉化GitLab?

    在上一篇博客中,已经正常安装好了GitLab,然而全部界面都是纯英文的,为了照顾整个团队的英文水平,因此这篇博客的目的是将纯英文的GitLab进行汉化. 纯英文界面 第一步: 确认GitLab版本号 ...

  10. java并发深入

    对象由数据+行为组成.数据就是字段,行为就是方法. 并发须要保证这些可被多个线程訪问的共享对象数据的完整性,以及某些特定完整性语义. 比方一个类有一个字段count=0,两个线程同一时候对它做加1操作 ...