HTTPS 原理解析

HTTPS简解+burpsuite 抓https包原理+探针解析https原理 HTTPS的一些展开 阅读详情

 

一 前言

  在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,之后IETF对SSL 3.0进行了升级,于是出现了TLS(Transport Layer Security) 1.0,定义在RFC 2246。实际上我们现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词,但无论是TLS还是SSL都是上个世纪的事情,SSL最后一个版本是3.0,今后TLS将会继承SSL优良血统继续为我们进行加密服务。目前TLS的版本是1.2,定义在RFC 5246中,暂时还没有被广泛的使用 ()

概念可参考百科

http://baike.baidu.com/link?url=M8pBu1j_22f0PW6izvAOCTjhepyRcT320U9LDmjyzb586OYS_aBALxfqIGVca1V-8MJeSl3bTUEOThMuwpamPK

 

 

二  HTTPS 验证原理

  Https在真正请求数据前,先会与服务有几次握手验证,以证明相互的身份,以下图为例

 

 

 

2.1  验证流程

 

 注:文中所写的序号与图不对应但流程是对应的

1 客户端发起一个https的请求,把自身支持的一系列Cipher Suite(密钥算法套件,简称Cipher)发送给服务端

 

2  服务端,接收到客户端所有的Cipher后与自身支持的对比,如果不支持则连接断开,反之则会从中选出一种加密算法和HASH算法

   以证书的形式返回给客户端 证书中还包含了 公钥 颁证机构 网址 失效日期等等。

 

3 客户端收到服务端响应后会做以下几件事

    3.1 验证证书的合法性    

    颁发证书的机构是否合法与是否过期,证书中包含的网站地址是否与正在访问的地址一致等

        证书验证通过后,在浏览器的地址栏会加上一把小锁(每家浏览器验证通过后的提示不一样 不做讨论)

   3.2 生成随机密码

        如果证书验证通过,或者用户接受了不授信的证书,此时浏览器会生成一串随机数,然后用证书中的公钥加密。       

    3.3 HASH握手信息

       用最开始约定好的HASH方式,把握手消息取HASH值,  然后用 随机数加密 “握手消息+握手消息HASH值(签名)”  并一起发送给服务端

       在这里之所以要取握手消息的HASH值,主要是把握手消息做一个签名,用于验证握手消息在传输过程中没有被篡改过。

 

4  服务端拿到客户端传来的密文,用自己的私钥来解密握手消息取出随机数密码,再用随机数密码 解密 握手消息与HASH值,并与传过来的HASH值做对比确认是否一致。

    然后用随机密码加密一段握手消息(握手消息+握手消息的HASH值 )给客户端

 

5  客户端用随机数解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密  

     因为这串密钥只有客户端和服务端知道,所以即使中间请求被拦截也是没法解密数据的,以此保证了通信的安全

  

非对称加密算法:RSA,DSA/DSS     在客户端与服务端相互验证的过程中用的是对称加密 
对称加密算法:AES,RC4,3DES     客户端与服务端相互验证通过后,以随机数作为密钥时,就是对称加密
HASH算法:MD5,SHA1,SHA256  在确认握手消息没有被篡改时 

 

 

2.2  客户端如何验证 证书的合法性?

 

1. 验证证书是否在有效期内。

  在服务端面返回的证书中会包含证书的有效期,可以通过失效日期来验证 证书是否过期

2. 验证证书是否被吊销了。

  被吊销后的证书是无效的。验证吊销有CRL(证书吊销列表)和OCSP(在线证书检查)两种方法。

证书被吊销后会被记录在CRL中,CA会定期发布CRL。应用程序可以依靠CRL来检查证书是否被吊销了。

CRL有两个缺点,一是有可能会很大,下载很麻烦。针对这种情况有增量CRL这种方案。二是有滞后性,就算证书被吊销了,应用也只能等到发布最新的CRL后才能知道。

增量CRL也能解决一部分问题,但没有彻底解决。OCSP是在线证书状态检查协议。应用按照标准发送一个请求,对某张证书进行查询,之后服务器返回证书状态。

OCSP可以认为是即时的(实际实现中可能会有一定延迟),所以没有CRL的缺点。

 

3. 验证证书是否是上级CA签发的。


windows中保留了所有受信任的根证书,浏览器可以查看信任的根证书,自然可以验证web服务器的证书,

是不是由这些受信任根证书颁发的或者受信任根证书的二级证书机构颁发的(根证书机构可能会受权给底下的中级证书机构,然后由中级证书机构颁发中级证书)

在验证证书的时候,浏览器会调用系统的证书管理器接口对证书路径中的所有证书一级一级的进行验证,只有路径中所有的证书都是受信的,整个验证的结果才是受信

 

 

 

 

 

三  手机如何抓取HTTPS的请求数据

 

    当站点由HTTP转成HTTPS后是更安全了,但是有时候要看线上的请求数据解决问题时却麻烦了,因为是HTTPS的请求,你就算拦截到了那也是加密的数据,没有任何意义。

  那有方法解决吗? 答案是肯定的! 接下来就来个实例教程,教大家如何查看HTTPS的请求数据

 

  首先需要安装Fiddler 用于拦截请求,和颁发https证书

 

3.1  Fiddler根证书导出

   

  按图中操作把导出,再将导出的的根证书"FiddlerRoot.cer" 的后辍名 改为"crt"  "FiddlerRoot.crt" 因为手机没法直接安装 cer格式的证书

 

    

 

3.2  证书安装

  在本机把证书移到本机IIS中的某个网站的物理目录中,然后在手机浏览器中访问该证书的目录 如:"192.168.0.102:8001/FiddlerRoot.crt"

 如图

 

    

 

  此时手机会提示按装根证书,其实安装一个不受信的根证书是非常危险的,如果你安装了某些钓鱼网站或者有危害的根证书,那只要是该根证书下的所有证书都会验证通过,

那随便一个钓鱼网的网站只要安装了该根证书下的证书,都不会有任何警告提示。

很可能让用户有财产损失。所以在安装根证书时,手机系统会要求你输入锁屏密码,以确保是本人操作。

安装过程如下

 

  Fiddler的根证书名字都提示了是不受信的根证书

    

 

安装完成

 

    

 

 

 

 

3.3  通过Fiddler抓取手机的HTTPS请求

 

       Fiddler默认侦听的端口是8888,把手机WiFI的Http 代理设为本机Fiddler的地址如下图

   这样手机上所有的请求都会先通过Fiddler,Fiddler再转发到目标服务器

 

注意: 在家中的路由器中有线与无线通常不在一个网段,会导致Fiddler无法抓到手机的包,需要手动设置路由,可自行百度

 

    

 

 

 

    代理也设好之后便可以开始抓到Https的请求内容了如图

Https的默认端口号是 “443”可以看出红框中的是未装根证书前的请求,加了一把小锁,而且请求记录都是灰色的

而安装证书后请求则一切正常,请求内容也都可以正常看到。

 

    

 

 

3.4  为什么安装了Fiddler根证书可以看到Https请求内容

 

  要解释这个问题,就需要了解最开始的Https的验证原理了,回顾一下,先是客户端把自己支持的加密方式提交到服务端,然后服务端 会返回一个证书

到这一步问题来了,手机未什么要安装Fiddler的证书呢?

  第一 因为Fiddler在客户端(手机)发出Https请求时,充当了服务器的角色,需要返回一个证书给客户端,

但是Fiddler的证书并不是CA机构颁发的,客户端一验证就知道是假的连接肯定就断了,那怎么办呢?

那就想办法让客户端信任这个服务端,于是就在客户端安装一个Fiddler的根证书。

所以只要是通过Fiddler的Https请求,验证根证书时自然会通过,因为Fiddler的根证书你已经受信了!

 

     第二 现在只是客户端(手机)和Fiddler这个伪服务端的Https验证通过了,还没有到真正的服务端去取数据的,此时Fiddler会以客户端的身份与真正的服务端再进行一次HTTPS的验证,最后拿到数据后

又以服务端的身份与客户端(手机)通信。也就是说在一次请求中数据被两次加解密,一次是手机到Fiddler,一次是Fiddler到真正的服务端。

 

整个过程  手机----》Fiddler----》 服务器  Fiddler 即充当了服务端又充当了客户端,才使得数据能够正常的交互,这个过程中最重要的一环就是手机端安装的 根证书!

 

 

 

 

四  总结

 

 写了这么多,其实也只是把Https的基本流程写清楚了一部分,这其中每一个步骤深入下去都是一门学科,而对于我们而言,能清楚其大致运作流程,做到心中有数据就算可以了,

Https在目前的网络数据安全传输占据着重要地位,目前可能也没有更优的方案来代替Https。另外一定要注意 不要随便安装不确定的的根证书,以免带来不必要的损失。

写这篇文章时,已经进入我的春节假期,而我也已经踏上了 回家的火车,大家有疑问可以在评论中回复,如有错误之处还望大家能指出,以免误导他人

 

提前祝大家新年快乐!

 

 

 

 

如果您觉得本文让您有所收获,不妨点下赞,为我的付出,给一点点回报!

如果您觉得本人也有点意思,不妨点个观注,大家一起谈技术,谈人生!

 

 

 以下为参考资料

http://www.guokr.com/post/114121/  https原理

 

http://www.guokr.com/post/116169/ SSL证书

 

http://www.cnblogs.com/svan/p/5090201.html https工作原理

 

http://blog.youkuaiyun.com/clh604/article/details/22179907 Https 原理

 

https://www.zhihu.com/question/37370216/answer/71956414  浏览器如何验证HTTPS证书的合法性?

 

http://blog.youkuaiyun.com/wkk2620632/article/details/39433673   公钥证书cer,pfx

 

http://www.07net01.com/zhishi/640504.html  数字证书资料cer和pfx的区别

http 和 https 的区别及原理解析 阅读详情

相关推荐

https请求解析

里面集成有许多httpclient方法,包括二进制流等一系列方法,囊括了我们大部分项目需要的。比较全面

HTTPS那些事 用java实现HTTPS工作原理

一:什么是https协议 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使 用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.0,

m0_38091591的博客 1102

java实现读取证书访问https接口

java实现读取证书访问https接口并获取返回数据.证书格式cer,der,crt等。

HTTPS 的加密流程

1.什么是HTTPS HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层. HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况。 由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器, 交换机等), 那么运营商的网络设备就可以解析出你传输的数据内容, 并进行篡改. HTTPS 就是在 HTTP 的基础上进行了加密, 进一步的来保证用户的信息安全~...

m0_59155415的博客 851

使用网分对晶体ESR/L1/C1/C0进行测量计算

Use R&S Vector Network Analyzer test XTAL ESR/L1/C1/C0 測量方法:使用儀器的Port1端口,測量XTAL的S11,通過諧振的參數計算出ESR/L1/C1/C0的值。 實際晶體的等效模型:通常方便晶體分析,使用下圖(b)的等效模型,但實際測量發現晶體存在多個串聯諧振點,實際等效模型更接近(c)。 儀器測量到的S11,其中M...

qq_39138630的博客 2086

(保姆式教程:从下数据到画图)python如何利用EOF分析SSTA海温异常现象并画图

保姆式教程,教你如何利用python分析1979-2004年的太平洋地区的海温异常SSTA,并且绘制出空间模态和时间序列的图片。

shayuxing的博客 2万+

HTTPS(二)之JAVA中HTTPS那些事儿

本篇主要描述JAVA中与HTTPS相关的概念与代码实现。 JAVA中的证书 KeyStore和TrustStore SSL层证书校验过程 HttpsURLConnection JAVA中的证书 Java在JRE的安装目录中保存了一份默认可信的证书列表,这个列表保存在$JRE/lib/security/cacerts文件中,可以通过JRE自带的keytool工具打开该文件,默认密码为changeit。可以通过如下命令列出cacerts中的所有内容: keytool -list -keystore cace

Joker的博客 1432

基于STM32、HAL库的ICP-20100气压传感器 驱动程序设计

它具有低功耗、高精度、快速响应等特点,非常适合物联网、可穿戴设备和无人机等应用。#define ICP20100_FIFO_CTRL 0x09 // FIFO控制寄存器。#define ICP20100_FIFO_DATA 0x0A // FIFO数据寄存器。#define ICP20100_FIFO_STS 0x0B // FIFO状态寄存器。#define ICP20100_FIFO_WTM 0x15 // FIFO水印设置。

corlin6688的博客 600

java解析https地址协议(HttpsUtil)

package com.customcode.util; import java.util.Map; import java.util.Set; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.http.client.HttpClient; import org.apache.http.client.me.

余大冠子的博客 1378

【连接器专题】 EIA-364 系列标准的完整列表

EIA-364 系列标准在电子工业中具有重要的地位,为电子连接器和互连系统的测试和验证提供了统一的、可操作的流程和方法,有助于提高电子产品的质量和可靠性,促进了电子工业的发展

一点硬件 2660

开放平台实现安全的身份认证与授权原理与实战:使用OAuth 2.0实现授权码模式

作者:禅与计算机程序设计艺术 1.背景介绍 随着互联网应用的飞速发展,各种网站、App、小程序等都将逐渐向用户提供了丰富的功能和服务。在这些应用中,用户通常需要登录才能使用这些服务,这就涉及到用户信息的安全问题。如果用户的信息被泄露或篡改,那么可能造成严重后果。因此,为这些应用提供安全且健壮的身份验

AI天才研究院 494

HTTPS详细解析

1、 什么是HTTPS?HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)安全超文本传输协议,可以理解为HTTP+SSL/TLS,简单来说它是HTTP的安全版。HTTP 协议定义了一套规范,让客户端或浏览器可以和服务器正常通信,完成数据传输,但是HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险。TLS(Tra

苏南生的优快云博客 1万+

BACnet协议栈基本对象BI、BO、AI、AO、AV以及device和File对象介绍

BACnet协议栈基本对象BI、BO、AI、AO、AV以及device和File对象介绍

shufawangzhang的博客 3988

HTTPS原理解析

HTTP与HTTPS区别 http发送数据以明文方式发送,存在被窃取,HTTPS是指使用http与ssl协议,访问过程会先和服务端建立链接,返回服务器网站证书,确认无误。 对称加密 原理:存在加密密钥K与解密密钥K一致,加密数据data。 举例: 浏览器(C端)向服务端(S端)发送数据,C端使用加密密钥K加密数据转为密文cT,S端接收到cT使用解密密钥K解析。 那么密钥K如何生...

✧V的博客 510

【VibeCoding系列】小白入门指南:模型选择、编辑器选择、项目预定全分析

开箱即用:下载安装就能用,不用配 API Key(也可以自己配)Cmd+K 快速修改:选中代码,按 Cmd+K,直接让 AI 修改Cmd+L 对话:侧边栏聊天,支持引用文件和代码@文件引用:输入 @ 就能引用项目中的文件,AI 自动读取上下文Agent 模式:告诉 AI 一个需求,它自动跨文件修改下载地址cursor.com(免费版有额度限制,足够入门)✅下载 Cursorcursor.com),安装打开✅选一个小项目(个人名片页 or Todo List)✅按照七步工作流开干。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 213

什么是DHCP Snooping?如何配置DHCP Snooping?

功能描述防护类型防御伪造 DHCP 服务器、避免地址冲突、增强网络安全性使用场景企业园区网、校园网、大型局域网配合机制IP Source Guard、DAI、防止 ARP 欺骗部署难度⭐⭐(简单)“DHCP Snooping,是内网 DHCP 安全防护的第一道门神。” 🛡️。

网络技术联盟站 1267

经得住拷问的HTTPS原理解析

经得住拷问的HTTPS原理解析

m0_73443478的博客 955

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

解析HTTPS加密原理

解析HTTPS加密原理_富春山居_ZYY的博客-优快云博客

u012174809的专栏 126

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

https原理解析

最近公司分享会讲了这块的内容,于是就学习了一下。 在客户端和服务器中作怪的中间人无非做三件事: 窃听、假冒、篡改 https的出现就是为了防止中间人作怪的。 这里要引入两个概念: 对称加密: 对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowf...

1998DmjzZZ瞎bb 569

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

深度解析HTTP/HTTPS协议:从原理到实践

在当今互联网世界中,HTTP和HTTPS协议如同空气般存在于每个网页请求的背后。作为开发者或技术爱好者,理解这些基础协议至关重要。本文将用六大板块,配合原理示意图和实操案例,带你系统掌握HTTP/HTTPS的核心知识。

和舒貌的博客 1942

深度解析HTTPS原理

深度解析HTTPS原理 HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷是为了保证数据安全。 近两年,Google、Baidu、Facebook 等这样的互联网巨头,不谋而合地开始大力推行 HTTPS, 国内外的大型互

Skyline 1万+
上一篇: rediscluster
下一篇: 分布式ID生成器 | 架构师之路
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值