https 详解-程序员宅基地

技术标签: 网络  https  

http + 加密 + 认证 + 完整性保护 = https

http在传输过程中会受到窃听、篡改的风险,且通信的双方也有可能是伪造的,所以在传输机密信息的时候,需要进行加密、通信双方认证以及信息完整性保护。https是在http的基础上添加了一个SSL协议,即http先与ssl进行通信,ssl再与tcp进行通信。

https会对http请求的 header 和 body 都进行加密,可以防止 token 被盗用,因此 https + token 是一种加密机制比较完善的传输方式。

一. 加密机制

通常来说有两种加密机制,一个是对称加密(共享加密),一个是非对称加密。共享加密通过同一个密钥进行加密解密,需要将密钥传输给接收方,但密钥在传输过程中存在安全性问题。而非对称加密通过公钥进行加密,私钥进行解密,私钥不用进行传输,解决了共享加密的安全问题。但是非对称加密的处理速度要慢很多。所以,https采用混合加密机制,先对密钥用对称加密的公钥进行加密传输,再对信息进行共享加密传输。

现在看起来似乎没什么问题了,但是这种方式其实还存在缺陷,那就是,我们无法验证用来加密共享密钥的公钥本身的安全性问题。这一点,可以使用由数字证书认证机构颁发的公开密钥证书来解决。一般流程如下:

  • 服务器把自己的公开密钥登录至数字认证机构
  • 数字认证机构用自己的密钥向该公开密钥进行数字签名并颁发公钥证书(注意常用数字认证机构的公钥已经植入到浏览器端)
  • 客户端收到服务端的公钥证书后,通过浏览器中的认证机构的公钥对该公钥证书上的数字签名进行验证,确保该公钥的真实性
  • 之后,客户端使用该公钥对信息进行加密传输
  • 最后,服务端通过私钥对信息进行解密

二. 认证机制

证明服务端真实性的EV SSL证书。持有该证书的web网站的浏览器地址栏的背景颜色是绿色的。

客户端证书需要用户自行安装客户端证书,且每张证书都需要付费购买,只有一些特殊业务才会用到,比如银行的网上银行。

https的安全通信机制
在这里插入图片描述

  • 客户端首先发送client hello报文开始SSL通信。报文中包含SSL的版本以及加密组件列表(比如加密算法及密钥长度等);
  • 如果服务端可进行SSL通信,会响应一个server hello,内容与client hello差不多;
  • 之后服务端再发送certificate报文,该报文中包含服务端的公钥证书;
    ServerHelloDone标识最初的SSL握手协商阶段结束;
  • 接着客户端发送ClientKeyExchange报文作为回应,该报文包含一个Pre-master secret随机密码串,并通过公钥进行加密;
  • 客户端发送changeCipherSpec报文,提示之后的报文会采用上述随机密码串进行加密;
  • 客户端发送finished报文,该报文包括连接至今全部报文的整体校验值;(握手协商是否成功要以服务端是否能解析该报文为标准)
  • 服务端发送同样的changeChipherSpec报文;
  • 服务端发送finished。
  • SSL连接建立完成,通信受到SSL的保护,即可发送正常的http请求。
  • 断开连接时,由客户端发送close_notify报文,之后再发送TCP FIN报文来关闭与TCP的通信。

三. https 传输的数据是否需要二次加密

https 能保证的是连接的安全,当我们打开网站的时候,是需要和服务器进行通信的,那么 https 能够保证在通信时数据传输是安全的。

如果我们打开一个网页,在网址的前面有标明"https"的话,那么就说明这个网站有证书并且有进行加密的操作。但是,不少钓鱼网页其实也可以使用 https,这就说明了 https 并不能保证网站本身是安全的。举个例子,如果你在一个网页上输入账号密码的话,使用 https 的网页能够保证你的账号密码在传到网站服务器的过程中不会被其他的东西干扰或者盗取,但是,你输入的账号密码却有可能被你正在访问的这个网页盗用。

再举个例子:移动端手机种了木马,终端被攻击了,那么对于传输通道进行加密就毫无意义,试想人家都跑到你家里面去了,所有的东西在内存跟硬盘里面都有,再进行网络监听毫无意义。

所以 https 本身是安全的,至少在网络传输过程中,能够保证传输数据的完整性和一致性。但是并不代表它的宿主是安全的,所以如果是金融类,支付类等对安全等级要求很高的软件,最好进行二次加密。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39505091/article/details/123338625

智能推荐

Hadoop : hdfs的核心工作原理_hdfs 内核原理-程序员宅基地

文章浏览阅读5.7k次。namenode元数据管理要点 什么是元数据?hdfs的目录结构及每一个文件的块信息(块的id,块的副本数量,块的存放位置<datanode>)元数据由谁负责管理?namenodenamenode把元数据记录在哪里?namenode的实时的完整的元数据存储在内存中;namenode还会在磁盘中(dfs.namenode.name.dir)存储内存元..._hdfs 内核原理

详解Python操作Excel文件_python workbooks.open-程序员宅基地

文章浏览阅读7.4k次,点赞34次,收藏250次。前言本篇文章主要总结了一下利用python操作Excel文件的第三方库和方法。常见库简介1.xlrdxlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件。地址:http://xlrd.readthedocs.io/en/latest/ xlrd支持.xls,.xlsx文件的读 通过设置on_demand变量使open_wor..._python workbooks.open

Android 逆向(四) - adb常用逆向命令-程序员宅基地

文章浏览阅读5.2k次,点赞6次,收藏7次。本篇文章继续记录下adb 的一些常用逆向命令.

Ribbon 饥饿加载_ribbon饥饿加载-程序员宅基地

文章浏览阅读768次。Ribbon 默认为懒加载即在首次启动Application时会默认加载,然后将其存储在缓存中,这样程序启动完成后就可以直接拿来用。在applicaiont.yml配置文件中完成配置,可支持针对某个服务进行配置。_ribbon饥饿加载

JIRA 7.8 安装详解说明_atlassian-jira-software-7.8.1-x64-程序员宅基地

文章浏览阅读2.4k次,点赞4次,收藏2次。1、安装centos系统2、关闭防火墙 ---------systemctl stop firewall.service3、查看防火墙状态 --- firewall-cmd --state4、安装wget 包----------yum -y install wget5、安装java环境 yum -y install java-1.8.0-openjdk.x86..._atlassian-jira-software-7.8.1-x64

uni-app解决自定义导航栏,刘海屏的适配问题_uniapp适配刘海屏-程序员宅基地

文章浏览阅读6.6k次,点赞2次,收藏20次。uni-app在微信小程序上,自定义导航栏解决刘海屏的适配问题如果使用的是uni-app的自定义导航栏组件 uni-nav-bar 自定义导航栏,则设置 statusBar为true即可如果是自己写的自定义导航栏组件,解决刘海屏的适配问题,就是解决状态栏的高度问题,通过uni-app的接口来获取到当前设配的状态栏高度,并在组件中添加一个元素并设置高度为 获取到的状态栏高度;<template> <view class="music-head" :style="{color:co_uniapp适配刘海屏

随便推点

深入浅出ExtJS 第四章 表单与输入控件-程序员宅基地

文章浏览阅读149次。1 4.1 制作表单 2 var form = new Ext.form.FormPanel({ 3 title:'form', 4 defaultType:'textfield', 5 buttonAlign:'center', 6 frame:true, 7 width:220, 8 fieldDef..._extjs textfiled 直接放在viewport

物联网卡是什么?_什么是物联网卡-程序员宅基地

文章浏览阅读1.7k次。在最近几年,物联网技术这个概念就一直被广泛提及,他的到来给予了我们全新的发展机遇,一大批智能设备也在高速发展。然而,作为物联网技术中的关键一环,物联网卡也得到了急速的发展,物联网卡的到来极大的方便了我们的日常生活,他也为智能设备装上了一款智慧大脑。那么,什么是物联网卡?物联网卡是三大运营商联合发布的,主要用户是针对于企业而非个人。物联网卡也被安装在各种物体上是SIM卡、传感器、二维码..._什么是物联网卡

在虚拟机中安装docker_虚拟机安装docker-程序员宅基地

文章浏览阅读9.1k次,点赞6次,收藏30次。在虚拟机中安装docker_虚拟机安装docker

初始mach-o文件及在项目中应用-程序员宅基地

文章浏览阅读494次,点赞5次,收藏4次。本文字数:2250字预计阅读时间:15分钟01认识mach-o的必要性了解mach-o的结构可以帮助认识系统加载二进制文件的动态链接和静态链接。应用层面,使用initialize的c++函数计算启动时间耗时也需要以mach-o的结构知识为铺垫。还可以用在使用clang自注册启动任务上。后续会一一展开说明。02mach-o的定义mach-o是mach object的缩写,是存储程序或库的标准格式。a...

法线贴图的原理和实现-程序员宅基地

文章浏览阅读160次。本文出自:http://shiba.hpe.sh.cn/jiaoyanzu/wuli/showArticle.aspx?articleId=328&classId=4法线映射可以让由少量多边形构成的模型看起来像是由大量多边形构成的一样,无需添加更多的多边形。使用法线映射可以使表面(如墙壁)看起来更加富有细节和真实。展示法线映射的一个简单方法是模拟几何形状。要计算法线映射我们需要两个..._家具法线贴图的使用和原理、

vue商品秒杀倒计时-程序员宅基地

文章浏览阅读871次。今天做项目需要倒计时具体代码如下:showTimes(val) { let that = this; let interval = setInterval(() => { let nowTime = new Date().getTime(); let startDate = that.obj.endTime; startDate = startDate.replace(new RegExp('-', 'gm'), '/'); let startDate

推荐文章

热门文章

相关标签