超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

一、HTTP和HTTPS的基本概念

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二、HTTP与HTTPS有什么区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。

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

SSL四次握手过程,如下图所示:

  1. 客户端请求建立SSL链接,并向服务端发送一个随机数–Client random和客户端支持的加密方法,比如RSA公钥加密,此时是明文传输。
  2. 服务端回复一种客户端支持的加密方法、一个随机数–Server random、授信的服务器证书和非对称加密的公钥。
  3. 客户端收到服务端的回复后利用服务端的公钥,加上新的随机数–Premaster secret 通过服务端下发的公钥及加密方法进行加密,发送给服务器。
  4. 服务端收到客户端的回复,利用已知的加解密方式进行解密,同时利用Client random、Server random和Premaster secret通过一定的算法生成HTTP链接数据传输的对称加密key – session key。

此后的HTTP链接数据传输即通过对称加密方式进行加密传输。

HTTPS和HTTP的区别主要如下:

  1. https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

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

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

  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

三、HTTPS的工作原理

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议

  1. 客户端发起HTTPS请求

    这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。

  2. 服务端的配置

    采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。

    这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

  3. 传送证书

    这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

  4. 客户端解析证书

    这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

    如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

  5. 传送加密信息

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

  6. 服务段解密信息

    服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

  7. 传输加密后的信息

    这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

  8. 客户端解密信息

    客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。

参考链接:
http://www.mahaixiang.cn/internet/1233.html
http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
https://blog.csdn.net/zxk364961978/article/details/54809008

HTTP与HTTPS的区别, 以及SSL四次握手过程相关推荐

  1. http和https的区别 与 SSL/TLS协议运行机制的概述

    http和https的区别 与 SSL/TLS协议运行机制的概述 参考1 1 http 是不使用的SSL/TSL的通信通道 窃听风险:第三方获取通信内容 篡改风险:修改通信内容 冒充风险:冒充他人身份 ...

  2. 必备知识---TCP三次握手和四次挥手以及SSL四次握手

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. 位码即tcp标志位,有6种标示: SYN(synchronou ...

  3. HTTPS 中双向认证SSL 协议的具体过程

    HTTPS 中双向认证SSL 协议的具体过程: 这里总结为详细的步骤: ① 浏览器发送一个连接请求给安全服务器. ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器. ③ 客户浏览器检查服务 ...

  4. HTTP与HTTPS的区别及SSL协议

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂 ...

  5. wifi四次握手过程

    https://www.jianshu.com/p/590d859d8d78 初始化: 第一次握手: 第二次握手: 第三次握手: 第四次握手: 其实整个原理就是密钥交换,请查看胡哥的<加密的类型 ...

  6. 三次握手过程和四次握手过程

    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认:SYN:同步序列编号(Synchronize Sequence Numbers). 第二次 ...

  7. WPA-PSK 4-way handshake 四次握手过程

    3.4.2 第一次握手 AP广播SSID,AP_MAC(AA)→STATION STATION端  使用接受到的SSID,AP_MAC(AA)和passphares使用同样算法产生PSK   3.4. ...

  8. http和HTTPS的区别及SSL介绍

    SSL (Secure Socket Layer) 为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络 上之传输过程中不会 ...

  9. SSL四次握手的过程

    1. 客户端发出请求 首先,客户端(通常是浏览器)先向服务器发出加密通信的请求,这被叫做ClientHello请求. 2.服务器回应 服务器收到客户端请求后,向客户端发出回应,这叫做SeverHell ...

最新文章

  1. HALCON检测字符日期
  2. 德州学院计算机吴,计算机与信息学院举办“博士讲堂”系列讲座
  3. 在sae上编译代码是所遇到的问题
  4. “AI独角兽”半年巨亏52亿 旷视科技的IPO之路会好走吗?
  5. 钢铁侠机器人公仔_这个618,买个钢铁侠机器人和儿子一起回童年
  6. 什么是代理模式?代理模式有什么用?通过一个小程序分析静态代理和动态代理。自己简单实现动态代理。JDK动态代理和CGLIB动态代理的区别。
  7. linux中find查找命令的mtime参数使用方法说明
  8. angular 的配置文件的应用
  9. java异常标记_java.lang.RuntimeException:错误:0D0680A8:asn1编码例程:ASN1_CHECK_TLEN:错误的标记...
  10. Git入门及上传项目到github中
  11. python1e2_Python必修基础(1)
  12. 2022最新RTMP+HTTP直播地址汇总(亲测可用)
  13. 计算机d盘无法格式化,为什么不能格式化D盘?D盘无法格式化的解决方法
  14. win7网络无法连接其他计算机,Win7局域网不能访问如何解决?
  15. php word目录,word如何生成目录和页码
  16. 麒麟子带你快速进入Cocos Creator的3D世界
  17. 计算机组成原理知识点汇总(考研用)——第二章:数据的表示和运算
  18. Java 统计连续签到天数
  19. u8显示服务器资源不足,系统提示“虚拟内存不足”的原因及解决方法
  20. 京东iOS客户端组件管理实践

热门文章

  1. 绘制地铁线路html,基于HTML5技术绘制上海地铁图
  2. 香帅的北大金融学课 02 金融机构——银行
  3. linux 进城 io字节,(2)linux内核之内存分配与IO口操作
  4. 手撕TreeMap红黑树
  5. java 改变图片的DPI
  6. @StateObject和@ObservedObject有什么区别?
  7. Maya更改路径后找引用失败解决方法
  8. 元旦立下的Flag,春节后该如何实现?
  9. SpringBoot2.X监控和管理神器:SpringBoot Admin
  10. Bootstrap 模态框(Modal)的属性及方法