HTTPS学习笔记

1、对称加密算法与非对称加密算法

(1)对称加密算法中,加密秘钥和解密秘钥相同,也就是加密和解密使用同一个密钥

(2)非对称加密算法中,加密秘钥和解密秘钥不同

2、公钥密码体制

公钥密码体制包含公钥、私钥、加密算法三部分,由公钥加密的内容只能由私钥解密。通常,把公钥和加密算法公开,私钥自己保留。它也是一种非对称加密方式。

3、RSA加密算法

RSA是一种公钥加密算法,RSA的公钥和私钥都可以用来加密和解密,但是用其中一个加密后的内容必须用另一个才能解密。

4、消息摘要

消息摘要可以将任意长度的消息的短消息,改过程不可逆,消息摘要通常用在数字签名中。

5、使用公钥机制存在问题

用于公钥是公开的,客户端无法判断改公钥是否是他希望访问的服务器的公钥,其中存在冒用的风险

6、数字证书

现实世界中,每个人可以有一张***来证明自己的身份,在***上有签发机关、有效期限、还有个人的相关信息。我们信任***签发机关即政府机构的公信力,因此只要验证***是有效的,就可以相信这个人和***上的描述一致。同理,数字证书就是网络世界中个人或者组织的一个***,其签证机关是正式管理机构CA。CA用自己私钥对用户身份信息进行签名,改签名和用户身份信息一起就组成了数字证书。数字证书中主要包括用户的公钥、姓名、正式机构、证书有效期、数字签名等等。总结起来就是:证书是谁发的?发给谁?证书有效期多少?

7、如果通过证书验证用户身份

(1)用CA公钥解密证书中的数字签名得到消息摘要

(2)用哈希算法对证书红用户信息做消息摘要

(3)比较这两个消息摘要是否相同,如果相同,则可以信任改证书,从而可以信任该证书中的公钥及用户身份

8、HTTPS交互过程简述

简单的来讲,就是使用非对称加密算法保证对称加密密钥的安全传递,然后使用对称加密来保证数据传输过程中的安全性。

HTTPS的基础是SSL/TLS,SSL/TLS协议的基本过程是这样的:

(1)客户端向服务器端索要并验证公钥

(2)双方协商“会话秘钥”

(3)双方使用“会话秘钥”通信

既然,用到了公钥密码体制,如何保证公钥不会被篡改呢?

使用数字证书,只要证书是可信的,公钥就是可信的。

稍微具体一点的过程是这样的:

(1)客户端问候

客户端向服务端发送请求,发送的主要内容包括:支持的协议及版本、支持的加密算法、生成一个随机数

(2)服务端问候

服务端响应的内容主要包括:确认的协议及版本、确认的加密算法、服务器证书、生成一个随机数

(3)客户端回应

客户端校验发过来的证书,然后客户端客户端使用第1步和第2步中的随机数再生成一个随机数,我们称之为premaster_secret,然后由这三个随机数生成会话秘钥,称之为master_secret。最后用证书中的公钥将premaster_secret加密发给服务端。

(4)服务端回应

服务端收到premaster_secret之后,计算会话秘钥,秘钥交换协商成功,最后服务器给客户端一个回应,此后的同学就使用这个会话密码进行对称加密。

参考:

HTTPS研究(2)—分解HTTPS连接建立过程

SSL/TLS协议运行机制的概述

时间: 2024-10-01 00:31:39

HTTPS学习笔记的相关文章

https学习笔记三----OpenSSL生成root CA及签发证书

在https学习笔记二,已经弄清了数字证书的概念,组成和在https连接过程中,客户端是如何验证服务器端的证书的.这一章,主要介绍下如何使用openssl库来创建key file,以及生成root CA及签发子证书.学习主要参考官方文档:https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html# 一.openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备

httpd及https学习笔记

一.基础概念介绍: 1.媒体类型:html        text/html类型 txt           text/plain类型jpeg        image/jpeg类型gif           image/gif类型 2.方法:客户端希望服务器端对资源执行的动作GET:从服务器获取一份web资源HEAD:只从服务器获取文档的首部POST:向服务器发送需要处理的数据(一般是表单提交)PUT:将请求报文的主体部分存储到服务器上DELETE:从服务器删除一份文件 3. 连接的输入/输出

iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Type

值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常定义为struct, enum或tuple. 二是"引用类型"(reference types),它是多实例共享一份数据,这种类型通常定义为class. 在本文中,我们将展示值类型和引用类型各自的优点以及如何在二者之间选择. 它们有什么区别? 最基本的区别是 "值类型"

iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Types)

值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常定义为struct, enum或tuple. 二是"引用类型"(reference types),它是多实例共享一份数据,这种类型通常定义为class. 在本文中,我们将展示值类型和引用类型各自的优点以及如何在二者之间选择. 它们有什么区别? 最基本的区别是 "值类型"

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl

java/android 设计模式学习笔记(10)---建造者模式

这篇博客我们来介绍一下建造者模式(Builder Pattern),建造者模式又被称为生成器模式,是创造性模式之一,与工厂方法模式和抽象工厂模式不同,后两者的目的是为了实现多态性,而 Builder 模式的目的则是为了将对象的构建与展示分离.Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程.一个复杂的对象有大量的组成部分,比如汽车它有车轮.方向盘.发动机.以及各种各样的小零件,要将这些部件装配成一辆汽车,这个装配过

java/android 设计模式学习笔记(一)---单例模式

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对

LoadRunner学习笔记--未经排版

LoadRunner学习笔记 并发用户数量: 与服务器进行交互的在线用户数量 请求响应时间 从客户端发送请求到得到整个响应的时间 一般包括网络响应时间+server的响应时间 事务相应时间 完成这个事务所用的时间 是性能测试中重点关注的指标 吞吐率 单位时间在网络上传输的数据量(吞吐量:网络上传输的数据总量) 指从server返回客户端的 是衡量网络性能的主要指标 TPS 每秒钟系统能够处理事务的数量 点击率 每秒发送的HTTP请求的数量 点击率越大对server的压力也就越大 资源利用率 对不

Sass学习笔记(补充)

阅读目录 1. Sass和SCSS的区别 2. @while循环 3. @at-root 4. @content 5. 凸显注释 6. CSS输出样式 7. 重置浏览器样式 8. Sass调试和@debug命令.@warn命令 9. 使用Sass时的注意事项 相关链接:Sass学习笔记前篇 Sass关于颜色函数的乐趣 在Sass学习笔记前篇,记载了Sass安装.基本用法.编程语法,在这篇,将补充在前篇未记载的知识. 1. Sass和SCSS的区别 参考链接:http://sass.bootcss