文档章节

https与http的简要区别

sting_bo
 sting_bo
发布于 2015/08/24 22:22
字数 867
阅读 101
收藏 1
    背景:我不是专业运维,且毕业从事PHP才刚一年,对Linux服务器也是在摸索中,为了熟悉Linux,我在Windows和Linux之间切换了无数次,最后终于在日常使用中都适应Linux了,一如当初在sublime和vim,svn和git,拼音和五笔之间来回切换;
    之前公司做的产品是以ASP形式提供给客户使用,所以每签一个客户,都需要客户提供他们的服务器给我司,然后我再去客户的服务器上给布署环境,后来公司领导决定做SaaS,要求之一是要把http换为https,为了信息安全,然后我就开始各种搜索,最后如愿以偿,但实现不是重点,重点是某天有人问我,https和http有什么区别时,我回答:一个加密一个没有加密,https更安全。别人接着问为什么?我无言了。此后我甚至怀疑我配置的https到底有没有作用,后来我才去详细的学习,第一次写博文,而且是照着自己的理解,肯定有不对的地方,请大家斧正,非常感谢!

    http是一种无状态协议,在OSI七层模型(由底到高:物理层,数据链路层,传输层,网络层,会话层,表示层,应用层)的最上层:应用层,浏览器向服务器通过http协议发送请求(request),然后服务器响应(response),其中在网络层会有TCP协议,有大家熟悉的"三次握手",相关的还有UDP协议,大家可以了解一下(OSI七层模型以后会单写)。
    一次成功的http请求包含四步:
        1,建立连接;
        2,客户端发送http请求头;
        3,服务器响应生成结果返回;
        4,服务器端关闭连接,客户端解析,渲染页面;
    https与http类似,只是在传递信息过程中采用了非对称和对称两种加密方式,使用前提是你申请了免费的或是购买了受浏览器信任的证书,其实就是一对密钥(公钥和私钥,不知我这么理解有没有错误),配置完成之后(这也可以写个小博文),打开网页就可以看到浏览器左上角显示https且是绿色的;
    一次成功的https请求:
        1,浏览器请求服务器;
        2,服务器返回公钥(下面简称pub);
        3,浏览器检查pub是否有效,有效,生成一个随机密钥(下面简称key),用pub把key加密后传递给服务器(data1);
        4,服务器用私钥(下面简称pri)解密data1,获取key,把要返回的数据有key加密(data2)后返回给客户端;
        5,客户端用key解密data2,获取返回的数据;
可以用下面这张图来说明(图是找的):

https简要原理图

© 著作权归作者所有

共有 人打赏支持
sting_bo
粉丝 3
博文 2
码字总数 1714
作品 0
朝阳
高级程序员
HTTP与HTTPS区别/HTTPS知识点

关于2017年AppStore新提交应用必须打开ATS的要求只剩下一个多月了,相信大部分开发者都已经完成了从http到https的升级。当然了,现在谁也不知道如果依旧关闭ATS,审核的时候会发生什么。挑战...

秦无炎
2016/12/12
1
0
面试总结(php)

面试总结 博主(现在)是大三下学期,由于学校大四可以全nian实习,于是就开始了实习之路 在招聘网站上给盛大游戏(php实习生)投递了简历,因为当时盛大游戏在上海,而我本人是在山东,当时想多找...

eatnothing
2016/04/24
339
4
《小印记》iOS源码分享--HTTPS配置篇

笔者前不久终于发布了自己的APP《小印记》,在此分享一些iOS源码,如果读者学到了有用的东西,希望能前往App Store下载《小印记》支持一下笔者,谢谢! 《小印记》iOS源码分享--极光推送实践...

_子墨
2017/03/22
0
0
Tomcat配置https及访问http自动跳转至https

https介绍: HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密...

漠、
2012/06/18
0
0
JDK,JRE和JVM之间的区别

JDK,JRE和JVM之间的区别 易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 好多开发者学习 Java 编程有若干...

LYQ1990
07/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
12
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
14
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部