https简述

协议栈

https是在http应用层和tcp传输层之间加入了一个安全层(SSL、TLS) ,加入安全层的主要目的是将传输内容加解密,这样就避免了传输内容被窃听后,泄露重要信息(如用户名、密码),加密后即便被窃听,窃听者得到的也是无用的密文(因为窃听者没有解密密钥)。

 

https执行逻辑

我们知道了https主要就是用来加密传输数据的(防止被窃听),那么他是如何进行加密、解密的呢?如下图所示,当client发送https请求时,client不会像http那样(先建立tcp)直接将url发送至server,发送url属于正式数据的传输,而https要保证数据传输的加密。所以,在tcp建立之后,在正式http请求(发送url)之前,会有一个ssl的握手过程,该过程就是安全套接字要完成的:

首先client会发送其支持的加密算法等信息;

server收到请求后选择加密算法算法,然后随同证书一起发送给client;

client收到响应后,先进行证书认证(认证会验证证书是否过期、域名是否一致,最主要的是验证发送证书的人是不是证书的持有人,CA签发的证书都会先使用hash摘要,然后使用私钥签名,通过CA的公钥和hash就可以验证签名),生成一个随机数并保存,然后使用证书上的公钥(申请证书时,server生成的)加密该随机数后发送至server;

server收到加密后的随机数后,使用私钥(申请证书时,server生成的)将其解密并保存;

(此时双方已经持有安全通信的必要信息(对称加密算法、随机数密钥),可以进行安全通信了)

加密url等数据,进行正式的http请求;

server收到http请求后,会由安全层使用之前握手生成的随机密钥解密数据,然后上传至http应用层(此时就是普通的http信息了),server响应时,同样会经过安全层加密,然后发送给client;

client接收到请求响应后,安全层使用之前握手生成的随机密钥解密响应内容,然后传给应用层,至此一次完整的https请求就结束了。

 

https证书属性

https的证书遵循X.509标准,会包含许多属性,如下列属性,签名算法、哈希算法、公钥就可以验证证书有没有被篡改(即验证发送证书的人是不是证书的持有人)。类似12306这样使用自己制作的证书,如果自己可以保证证书本身的安全性,其实和CA颁发的证书在数据传输安全性方面没有差别。如果无法保证证书的安全性,就无法保证数据传输安全性了。比如私钥泄露(别人就可以使用私钥伪造证书了)、泄露出相同域名不同ip的另一份证书,从而可以进行dns劫持。

 

 

 

https性能

看来https的握手过程还是蛮复杂的,来看一下https的性能到底怎么样,下图是打开一个https网站时间消耗情况,Initial connection就是tcp+ssl=50ms,ssl为25ms,可见ssl与tcp的耗时相当(略高)。

 

转载于:https://www.cnblogs.com/holoyong/p/7296292.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

040、全卷积

之——FCN 目录 之——FCN 杂谈 正文 1.FCN 2.实现 杂谈 FCN(Fully Convolutional Network)是一种深度学习网络架构,专门设计用于语义分割任务。传统的深度学习网络如卷积神经网络(CNN)在处理图像时通常用于分类…

html不支持ie7,解决IE6/IE7/IE8不支持before,after问题

对从事web开发的朋友来讲,低版本的永远是一个痛点,不支持最新技术(如css3,html5)。在现在web开发中使用图标字体已经很广泛,如Font Awesome,Bootstrap等,字体图片主要是通过css选择器before,after结合content来实现,但…

前端学习(2511):路径出错

./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?typescript&index0!./src/ 原因路径出错,引入正确路径即可

HOJ 13828 Funfair

链接:http://acm.hnu.cn/online/?actionproblem&typeshow&id13828 Problem descriptionWe are going to a funfair where there are n games G1,...,Gn. We want to play k games out of the n games, and we can choose the order in which we play them—…

前端学习(2512):组件注册

app.vue <template><div id"app"><users></users></div> </template><script> import Users from ./components/User export default {name: App,data () {return {title: 这是我的第一个标题}},components: {users: Use…

中考物理可不可以用计算机,不能用计算机?2021年起广州中考课目改为“4+4”...

昨日&#xff0c;广州市教育局发布公告&#xff0c;明确提出广州将从2021年开始实施高中阶段学校考试招生制度改革(与在读初一学生相关)&#xff0c;改革实施前的2019至2020年为过渡期(与在读初二、初三学生相关)。从2021年开始&#xff0c;广州中考录取计分科目采用“44”模式…

前端学习(2516):传值和引用

传引用 数据都会变化 传值 不变化

hibernate状态转换关系图【原】

hibernate状态转换 其它参考 简单理解Hibernate三种状态的概念及互相转化 简单的Hibernate入门介绍转载于:https://www.cnblogs.com/whatlonelytear/p/7326353.html

宝塔 面板 放行端口

今天尝试了宝塔面板配置环境&#xff0c;发现我在8080端口启动了服务&#xff0c;从外网访问&#xff0c;并不能访问&#xff0c;后来发现需要在宝塔面板的安全功能下设置放行端口既可以解决问题。 1、开启一个服务 http-server . -a 0.0.0.0 -p 8080 2、在宝塔面板中设置 …

html打包成app的缓存问题,webpack 独立打包与缓存处理

关于微信公众号&#xff1a;前端呼啦圈(Love-FED)个人博客&#xff1a;劳卜的博客知乎专栏&#xff1a;前端呼啦圈前言先前写了一篇webpack入门的文章《webpack入门必知必会》&#xff0c;简单介绍了webpack拆分、打包、压缩的使用方法。本文将在上篇文章的基础上进一步讲解在使…

【bzoj题解】1001 狼抓兔子

题目描述 现在小朋友们最喜欢"喜羊羊与灰太狼",话说灰太狼抓羊不到&#xff0c;但抓兔子还是比较在行的&#xff0c;而且现在的兔子还比较笨&#xff0c;它们只有两个窝&#xff0c;现在你做为狼王&#xff0c;面对下面这样一个网格的地形&#xff1a;左上角点为(1,1…

计算机网络宽带接入,计算机网络(宽带接入技术).ppt

计算机网络(宽带接入技术).ppt (26页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;19.90 积分计算机网络 Computer Networks第六章 宽带接入技术宽带接入技术随着通信需求的发展&#xff0c;居民的通…

hapi返回xml格式 微信开发 node

圈内&#xff0c;使用Koa2、express比较多&#xff0c;而我hapi使用比较多。目前在做微信公众号开发&#xff0c;要求返回数据是xml格式。 1、之前的返回&#xff0c;直接return Json2Xml: async function (request, h) {const data <xml><ToUserName>< ![CD…

html css控制优先级,css权重及优先级问题_html/css_WEB-ITnose

css权重及优先级问题几个值的对比初始值指定值计算值应用值CSS属性的 指定值 (specified value)会通过下面3种途径取得&#xff1a; 在当前文档的样式表中给这个属性赋的值&#xff0c;会被优先使用。如果在当前文档的样式表中没有给这个属性赋值&#xff0c;那么它会尝试从父元…