本文为博主原创,未经允许不得转载: 

  目录  
  

http传输三大风险

  

安全通信原则

   https就是为了解析http上面的三个风险诞生的, 一般我们认为安全的通信需要包括以下四个原则: 机密性完整性身份认证不可否认

HTTPS定义

  HTTPS 是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。

HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。这个系统提供了身份验证与加密通讯方法。

TLS/SSL 协议及加密算法

  HTTPS 协议的主要功能基本都依赖于 TLS/SSL 协议,SSL 全称为安全套接层(Secure Sockets Layer),

  TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 、对称加密和非对称加密,

其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性

  使用对称密钥的好处是解密的效率比较快,使用非对称密钥的好处是可以使得传输的内容不能被破解,因为就算你拦截到了数据,

但是没有对应的私钥,也是不能破解内容的。就比如说你抢到了一个保险柜,但是没有保险柜的钥匙也不能打开保险柜。

那我们就将对称加密与非对称加密结合起来,充分利用两者各自的优势,在交换密钥环节使用非对称加密方式,之后的建立通信交换报文阶段则使用对称加密方式

  具体做法是:发送密文的一方使用对方的公钥进行加密处理“对称的密钥”,然后对方用自己的私钥解密拿到“对称的密钥”,

这样可以确保交换的密钥是安全的前提下,使用对称加密方式进行通信。所以,HTTPS采用对称加密和非对称加密两者并用的混合加密机制。 

  常用算法

  • 非对称加密算法:RSA,DSA/DSS

  • 对称加密算法:AES,RC4,3DES

  • HASH算法:MD5,SHA1,SHA256

https 工作流程

  https流程图如下:

  
  1. client向server发送请求https://baidu.com,然后连接到server的443端口。

  2. 服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这套证书其实就是一对公钥和私钥。

  3. 传送证书 这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名,服务端的域名信息等内容。

  4. 客户端解析证书 这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值(密钥)。然后用证书对该随机值进行加密。

  5. 传送加密信息 这部分传送的是用证书加密后的密钥(随机值),目的就是让服务端得到这个密钥(随机值),以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  6. 服务端加密信息 服务端用私钥解密,得到了客户端传过来的密钥(随机值),然后把内容通过该值进行对称加密

  7. 传输加密后的信息 这部分信息是服务端用密钥(随机值)对称加密后的信息,可以在客户端被还原。

  8. 客户端解密信息 客户端用之前生成的密钥(随机值)解密服务端传过来的信息,于是获取了解密后的内容。

    上述流程中的3,4,5即为 密钥协商交换算法 的过程。密钥交换协商机制是在身份认证的前提下,规避偷窥的风险。通俗的说,即使有攻击这在偷窥客户端与服务器的网络传输,

  客户端依然可以利用密钥协商机制与服务器端协商出一个只有二者可知的用来对于应用层数据进行加密的密钥(也称“会话密钥”)。密钥协商交换算法具体可看这篇文章:

  https://blog.csdn.net/CHYabc123456hh/article/details/108788580

    https 请求的过程中,还可以使用hash算法或签名算法,校验请求或响应的参数是否被篡改。client 端和server约定好的hash算法,对请求体或响应体进行摘要计算,

  在收到请求时,通过以上流程解密得到请求体,再使用hash算法对请求体进行hash计算,如果计算的值与另一端传过来的值相同时,则证明请求体没有被篡改。反之,请求被篡改。

HTTPS协议和HTTP协议的区别

  • https协议需要到ca申请证书,一般免费证书很少,需要交费。

  • http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

  • http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。

  • http的连接很简单,是无状态的 。

  • HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议, 要比http协议安全。

  

CA机构

  CA(Certificate Authority)机构 为证书颁发机构,其颁布的均为首认证可信的证书,在使用过程中浏览器不会弹出不可信错误。

SSL证书可以向CA机构通过付费的方式申请,也可以自己制作。
CA机构颁发的证书价格非常昂贵,而且有效期一般只有一年到三年不等(年数不同,价格也不同),

过期之后还要再次交钱申请,因此一般只有企业才会申请证书。

证书中主要包含:

  • 证书颁发机构:用于寻找链中的下一个验证节点

  • 证书的有效期:比如浏览器要根据这个值来判断证书是否已过期

  • 证书申请信息:比如浏览器要判断改证书是否可用于当前访问的域名

  • 公钥:用于后续和服务端通信的秘钥,这个公钥和当初生成 CSR 时的公钥是一个东西,因为只有它是和服务器的私钥是一对的

  • 签名:用于验证证书内容没有被篡改

在浏览器查看 www.baidu.com 域名的 证书:

通过这种方式可以查看域名对应的证书的版本,签名算法,有效期,颁发者,使用者等等。

证书链

  我们使用的证书都是由专门的CA机构颁发,根证书有统一的CA机构颁发,在根证书基础上颁发二级或三级证书具有CA的二级机构进行签发。

  csdn 博客用的证书如上,其中DigiCert为顶端根证书,GeoTrust CN RSA CA G1为中间证书, *.csdn.net 为服务器证书,

当你点击对应的证书,会显示颁发者之间的关系,这种关系便形成证书链。如下图所示:

  在证书链中,通常分三级结构,根证书,中间证书和服务器实体证书,正确的证书链顺序中服务器实体证书处在最底端,里面包含了些服务器域名,

服务器公钥和签名值等。服务器证书上一级是中间证书,中间证书就是上面提到的由权威CA机构授权的二级机构,可以由它来签发服务器证书。

中间证书可以是由多张证书组合在一起,最上级的是根证书,也就是CA机构,对服务器身份进行校验时,需要验证一整个证书链,

由于浏览器中集成了权威CA机构的根证书,因此主要是校验中间证书和服务器实体证书的签名值是否正确。

  校验服务器身份需要验证整个证书链,从服务器实体证书开始,服务器实体证书的签发者是上一级中间证书的使用者,中间证书的签发者是上一级根证书的使用者。

每一级证书都有签名值,根证书使用自己的根CA公钥验证自己的签名,也用来验证中间证书的签名值,中间证书的公钥用来验证下一级的服务器实体证书签名值,以此构成一条信任链。

  

Https 原理与工作流程及证书链校验的更多相关文章

  1. 第2章 rsync算法原理和工作流程分析

    本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释. 以下是本文的姊妹篇: 1.rsync(一):基本命令和用法 2.rsync(二):ino ...

  2. rsync算法原理和工作流程分析

    本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释.本文不会介绍如何使用rsync命令(见rsync基本用法),而是详细解释它如何实现高效的增 ...

  3. rsync(三)算法原理和工作流程分析

    在开始分析算法原理之前,简单说明下rsync的增量传输功能. 假设待传输文件为A,如果目标路径下没有文件A,则rsync会直接传输文件A,如果目标路径下已存在文件A,则发送端视情况决定是否要传输文件A ...

  4. 轻松理解Redux原理及工作流程

    轻松理解Redux原理及工作流程 Redux由Dan Abramov在2015年创建的科技术语.是受2014年Facebook的Flux架构以及函数式编程语言Elm启发.很快,Redux因其简单易学体 ...

  5. 【Linux高级驱动】触摸屏工作原理与工作流程

    触摸屏工作原理 触摸屏工作流程 @成鹏致远 (blogs:http://lcw.cnblogs.com) (email:wwwlllll@126.com) ) From WizNote

  6. 漫谈Github与开源,Git介绍以及Git的思想和基本工作原理 Git工作流程

    漫谈Github与开源 文字亮点: 为什么这些优秀的工程师会开源自己的项目? 因为开源是一种精神. 无数的软件开发者苦心积虑保护自己的代码不被破解,而还是被聪明绝顶的脚本小子破解了,但破解无数软件的脚 ...

  7. Struts2的工作原理及工作流程

    众所周知,Struts2是个非常优秀的开源框架,我们能用Struts2框架进行开发,同时能 快速搭建好一个Struts2框架,但我们是否能把Struts2框架的工作原理用语言表达清楚,你表达的原理不需 ...

  8. springmvc 运行原理 Spring ioc的实现原理 Mybatis工作流程 spring AOP实现原理

    SpringMVC的工作原理图: SpringMVC流程 . 用户发送请求至前端控制器DispatcherServlet. . DispatcherServlet收到请求调用HandlerMappin ...

  9. 【关于selenium自动化中,Webdriver的原理以及工作流程】

    原文地址:https://www.cnblogs.com/imyalost/p/7242747.html#4109245 作者:老 张 1.关于Webdriver 设计模式:按照Server-Clie ...

  10. SSL协议(HTTPS) 握手、工作流程详解(双向HTTPS流程)

    原文地址:http://www.cnblogs.com/jifeng/archive/2010/11/30/1891779.html SSL协议的工作流程: 服务器认证阶段:1)客户端向服务器发送一个 ...

随机推荐

  1. TensorFlow C++ 初始化 Tensor 内存 到GPU 内存

    最近使用TensorFlow C++版本实现神经网络的部署,我通过GPU 处理得到网络的输入值,因此输入值在GPU内存上保存, TF 输入tensor 的调用语句为 Tensor inputTenso ...

  2. 华企盾DSC在苹果电脑上加密文件不显示加密图标

    1.首先mac端暂时只支持在访达内显示加密图标,且新建的加密文件需要切换目录才可查看 2.检查DSCFinderSync进程是否启动,若没有启动重启一下DSC进程 3.若还没有显示直接重启系统的访达进 ...

  3. 华企盾DSC无缝替换其它加密软件两种方法

    有源码和大型图纸的使用第一种方案 第一种: 1.把DSCClient.exe和DSCService.exe添加到竞品的加密软件进程中,配置允许打开加密文件,加密类型不加密 2.安装DSC客户端后扫描加 ...

  4. Asp .Net Core 集成 FluentValidation 强类型验证规则库

    目录 入门程序 安装 案例:登录 验证器 内置验证器 自定义验证器 编写自定义验证器 可重复使用的属性验证器 本地化 DI 自动验证 官网:https://docs.fluentvalidation. ...

  5. Python——第五章:Traceback模块

    traceback 模块提供了在程序中处理和分析异常时的工具,帮助开发人员更好地理解程序出现问题的原因. 使用 traceback.format_exc() 函数可以获取当前异常的堆栈信息.可以把错误 ...

  6. Python——第五章:json模块

    什么是json: json 模块是用于处理 JSON(JavaScript Object Notation)数据的模块,翻译过来叫js对象简谱.JSON是一种轻量级的数据交换格式,常用于将数据在不同语 ...

  7. Pikachu漏洞靶场 (SSRF服务端请求伪造)

    SSRF(Server-Side Request Forgery:服务器端请求伪造) curl 点击 累了吧,来读一首诗吧 url是这样的: http://192.168.171.30/pikachu ...

  8. 热闹的人工智能VS酷寒的资本寒冬,2023年AI Agent项目盘点与融资分析

    2023年国内AI Agent下项目大盘点,科技大厂与创业公司齐头并进 热闹人工智能VS酷寒资本寒冬,2023年AI Agent项目盘点与融资分析 资本寒冬下的AIGC,为什么这些AI Agent项目 ...

  9. ubuntu 之 lftp 上传 和下载

    1. 安装 sudo apt-get install lftp 2. 简单教程 2.0 声明:上传或下载文件 用get 或 mget,这种方式 不包含文件夹本身,如果需要连文件夹一起上传或下载则需要使 ...

  10. 使用NPOI导出Excel,并在Excel指定单元格插入图片

    一.添加Nuget引用 二.弹框选择保存路径 string fileName = $"记录_{DateTime.Now.ToString("yyyyMMdd_HHmmss" ...