首先推荐一本书,《HTTP权威指南》我就是看这本书入门的,对http协议有了更好的理解,学习https的理论知识我认为需要了解以下几点,需要一步步的深入学习:

1、HTTPS的基本概念?

2、HTTPS和HTTP的差别?HTTP + 数据加密技术 =HTTPS ?HTTPS 所谓的安全是指哪里安全?

3、HTTPS 的详细交互过程?

4、基础的密码学知识学习:数字加密,对称密钥,非对称密钥,数字签名,数字证书的基本概念。

5、使用openssl怎么制造自签证书?

6、实现简单的https的客户端和服务器端(python版本)

7、利用wireshake抓包进一步分析HTTPS协议

8、实际项目开发过程中遇到的问题总结

其中1-3个点,放在本笔记中,4放在同系列学习笔记二下;5放在同系列学习笔记三下;6放在同系列学习笔记四下;7放在同系列学习笔记五下

一、HTTPS的基本概念

HTTPS 是最流行的HTTP 安全形式。它是由网景公司首创的,所有主要的浏览器和服务器都支持此协议。HTTPS 的URL 以https://,而不是http:// 开头,据此就可以分辨某个Web 页面是通过HTTPS 而不是HTTP 访问的。

HTTPS = HTTP + SSL(TLS),HTTPS 就是在安全的传输层上发送的HTTP。如下图所示:HTTPS 没有将未加密的HTTP 报文发送给TCP,它在将HTTP 报文发送给TCP 之前,先将其发送给了一个安全层,对其进行加密。现在,HTTP 安全层是通过SSL 及其现代替代协议TLS 来实现的。我们遵循常见的用法,用术语SSL 来表示SSL 或者TLS。

二、HTTPS与HTTP的区别

HTTP + 业务数据加密技术 ≠ HTTPS ;因为 HTTPS = HTTP + SSL(TLS),SSL  ≠ 业务数据加密技术;SSL是安全层,建立SSL隧道需要做隧道认证,至少要完成单向认证(服务器认证)或者双向认证,之后数据在传输的过程中都进行了加密处理;通常HTTP使用的在业务层做的数据字段的加密,是业务数据的加密,传输的过程中是没有加密的;而HTTPS的加密是指传输层的加密。HTTPS跟HTTP相比,有以下几个明显的优点:

• 服务器认证(客户端知道它们是在与真正的而不是伪造的服务器通话);
         • 客户端认证(服务器知道它们是在与真正的而不是伪造的客户端通话),通常现在web服务,不需要做客户端认证,只需要做服务器认证;
         • 完整性(客户端和服务器的数据不会被修改),因为整个传输过程是加密的;
         • 加密(客户端和服务器的对话是私密的,无需担心被窃听),使用wireshake监听HTTPS端口会捕获不到数据。
         • 效率(一个运行的足够快的算法,以便低端的客户端和服务器使用),如果使用HTTP+特别复杂的数据加密技术来试图替代HTTPS,交互的双方在加解密的过程会消耗大量的性能,性能下降特别明显。
         • 普适性(基本上所有的客户端和服务器都支持这些协议)。
         • 管理的可扩展性(在任何地方的任何人都可以立即进行安全通信)。
         • 适应性(能够支持当前最知名的安全方法)。
         • 在社会上的可行性(满足社会的政治文化需要)。

三 、HTTPS的交互过程

1、历程一:利用非对称加密传输数据, HTTP + 非对称加密技术

采用HTTP协议,利用非对称加密RSA技术对数据进行加密(RSA 算法自身,甚至RSA 实现的源代码,破解代码找到相应的私有密钥的难度仍相当于对一个极大的数进行质因数分解的困难程度,这种计算被认为是所有计算机科学中最难的问题之一)

只要服务器端保存好私钥,这样看来数据的传输铁定是没问题的,但是这还有一个很大的风险,如果黑客假冒自己是服务器端,把客户端的公钥替换成跟黑客服务器匹配的一对公钥,客户端会在不知情的情况下,与黑客服务器进行交互。

2、历程二:签名证书 + SSL 加密,验证服务器身份,加密传输通道,所有的通信数据在应用层下加密传输,保证传输层安全。HTTPS

交互过程如上图所示,详细的描述了在简历TCP请求后,SSL握手的过程,整个HTTPS的交互过程大致如下:

第一步:1-3 服务器端生成一个证书请求,服务器向权威的CA机构申请证书,一般是把公钥给CA进行加密生成带CA签名的证书。

第二步:4 如果CA是权威的机构,一般情况下浏览器会报错CA的根证书,如果是自签,则需要客户端主动加载或者选择信任服务器发来的证书。

第三步:5 建立底层socket服务,完成TCP的三次握手。

第四步:6 建立传输层的SSL握手,具体又可描述为:

A :  6.0-6.1 客户端发起clent hello 请求:将自己支持的一套加密规则、以及一个随机数(Random_C)发送给服务器。

B :  6.2-6.3 服务器响应server hello :服务器根据自己支持的加密规则,从客户端发来的请求中选出一组加密算法与HASH算法,生成随机数(Random_S),并将自己的身份信息以证书(CA)的形式发回给浏览器。

C:   6.4-6.5 客户端接到服务器的初步响应后做四件事情,然后把数据发送给服务器端:

(1)证书校验: 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等)。

                 (2)生成密码:浏览器会生成一串随机数的密码(Pre_master),并用CA证书里的公钥加密(enc_pre_master),用于传给服务器。

(3)计算协商密钥:
                         此时客户端已经获取全部的计算协商密钥需要的信息:两个明文随机数 Random_C 和 Random_S 与自己计算产生的 Pre-master,计算得到协商密钥enc_key。enc_key=Fuc(random_C, random_S, Pre-Master)

                 
(4)生成握手信息:使用约定好的HASH计算握手消息,并使用协商密钥enc_key及约定好的算法对消息进行加密。

D:   6.6-6.7 服务器端接收到客户端发来的SSL握手信息后,做以下3件事:
                 (1)私钥解密:使用自己的私钥从接收到的enc_pre_master中解密取出密码Pre_master。

(2)计算协商密钥:此时服务器已经获取全部的计算协商密钥需要的信息:两个明文随机数 Random_C 和 Random_S 与Pre-master,计算得到协商密钥enc_key。enc_key=Fuc(random_C, random_S, Pre-Master)

(3)解密握手消息:使用协商密钥enc_key解密客户端发来的握手消息,并验证HASH是否与客户端发来的一致。
                  (4)生成握手消息使用协商密钥enc_key及约定好的算法加密一段握手消息,发送给客户端。

第五步: 7 正常加密通信
                   握手成功之后,所有的通信数据在应用层下都将由之前协商密钥enc_key及约定好的算法进行加密解密。

转载于:https://www.cnblogs.com/loleina/p/8418085.html

HTTPS学习笔记一----HTTPS的基础理论知识相关推荐

  1. 【图神经网络】图神经网络(GNN)学习笔记:图的基础理论

    图神经网络GNN学习笔记:图的基础理论 1. 图的概述 2.图的基本类型 2.1 有向图和无向图 2.2 非加权图与加权图 2.3 连通图与非连通图 2.4 二部图 2.5 邻居和度 2.6 子图和路 ...

  2. JDBC 学习笔记(一)—— 基础知识 + 分页技术

    2019独角兽企业重金招聘Python工程师标准>>> 本文查阅方法:     1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题     2.快捷"查找" ...

  3. MATLAB学习笔记2:MATLAB基础知识(下)

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  4. 【Python学习笔记】第一章基础知识:格式化输出,转义字符,变量类型转换,算术运算符,运算符优先级和赋值运算符,逻辑运算符,世界杯案例题目,条件判断if语句,猜拳游戏与三目运算符

    Python学习笔记之[第一章]基础知识 前言: 一.格式化输出 1.基本格式: 2.练习代码: 二.转义字符 1.基本格式: 2.练习代码: 3.输出结果: 三.输入 1.基本格式: 2.练习代码: ...

  5. GDAL学习笔记02:GDAL基础知识

    你的习惯决定了你会成为什么样的人. GDAL学习笔记02:GDAL基础知识 前言 1. 版本 2. 摘要 3. 说明 4. 微信公众号GISRSGeography 一.GDAL简介 二.导入GDAL ...

  6. 陈宝林《最优化理论与算法》超详细学习笔记 (二)————补充知识(凸集) 第二章 线性规划的基本性质

    陈宝林<最优化理论与算法>超详细学习笔记 (二)----补充知识 凸集 & 第二章 线性规划的基本性质 补充知识 凸集 方向与极方向 表示定理 择一定理 第一章 线性规划的基本性质 ...

  7. HTTP和QUIC协议以及HTTPS——学习笔记

    HTTP的特征 HTTP 简单 灵活和易于扩展 HTTP在应用层,他的下层可以随意变化,比如:HTTPS就是在HTTP和TCP之间加上SSL/TLS安全传输层,HTTP/3把下层的TCP换成了基于UD ...

  8. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入&q ...

  9. ROS学习笔记基础2(基础知识和ROS架构)

    ROS学习笔记1(基础知识和ROS架构) 文章目录 ROS学习笔记1(基础知识和ROS架构) 1. 什么是ROS 2. ROS和其他机器人平台有什么不同 3. ROS架构组成 3.1 文件系统级别 3 ...

最新文章

  1. 基于ESP8266 WiFi控制的步进升降机械平台
  2. python能做游戏吗-python能开发游戏吗
  3. 简述模块-random
  4. 在HTML文件中加载js
  5. java图像处理之拉普拉斯锐化和一阶微分梯度锐化
  6. ffmpeg libx264_编程小短文:FFmpeg视频画面尺寸调整,必知必会
  7. Android手游《》斗地主完整的源代码(支持单机和网络对战)
  8. java实现次方的运算_【技术干货】Java 面试宝典:Java 基础部分(1)
  9. java网络编程TCP传输—流操作—拿到源后的写入动作
  10. java下载文件名乱码的解决方法
  11. matlab实现信号与系统中卷积的计算的两种方法
  12. tibco往服务器发消息,Tibco EMS 初级使用方法小结
  13. 3D打印切片软件Cura及CuraEngine原理分析
  14. Java BigDecimal 的舍入模式(RoundingMode)详解
  15. WWW和Web的区别
  16. 玩转5G之--初探5G网络模型(OSI模型和TCP/IP模型)
  17. Java,完全一头雾水,求大shen们指点
  18. 大数据冲击下图书出版编辑转型策略探析(非原创)
  19. 处理VUE移动端输入法遮挡input输入框的问题
  20. 停招!MSRA,被曝停招国防七子及北邮学生!!

热门文章

  1. 全国各高校开学时间汇总!
  2. 给python小白的几个小练习(附答案详解哦)
  3. 深度学习(五十一)变分贝叶斯自编码器(上)
  4. 医院怎样进行计算机安全管理制度,医院信息安全管理制度
  5. Beyond Compare 4
  6. oracle怎么查询和插入表,Oracle查询一个表的数据插入到另一个表
  7. 软考网络工程师学习笔记2-数据通信基础
  8. 渗透测试入门15之常见端口安全测试
  9. stm32单片机屏幕一直闪_用STM32做一个微型掌上示波器项目——终于鼓起在大牛前献丑的无比勇气...
  10. 动态网页开发技术(一):Servlet