1.“SSL/TLS”是什么?

SSL是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”,它是在上世纪90年代中期,
由网景公司设计的(顺便插一句,网景公司不光发明了 SSL,还发明了很多 Web 的基础设施——
比如“CSS 样式表”和“JS 脚本”)。
为啥要发明SSL这个协议捏?因为原先互联网上使用的HTTP协议是明文的,存在很多
缺点——比如传输内容会被偷窥(嗅探)和篡改,发明SSL协议,就是为了解决这些问题。
到了1999年,SSL因为应用广泛,已经成为互联网上的事实标准,IETF就在那年把SSL标准化,
标准化之后的名称改为TLS(是“Transport Layer Security”的缩写),中文叫
做“传输层安全协议”。
很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。

2、“HTTPS”是什么意思?

解释完 HTTP 和 SSL/TLS,现在就可以来解释 HTTPS 啦,咱们通常所说的 HTTPS 协议,
说白了就是“HTTP 协议”和“SSL/TLS 协议”的组合,你可以把 HTTPS 大致理解为——
“HTTP over SSL”或“HTTP over TLS”(反正 SSL 和 TLS 差不多)。
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),
是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,
因此加密的详细内容就需要SSL。
它是一个URI scheme(抽象标识符体系),句法类同http:体系,
用于安全的HTTP数据传输。
https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口
及一个加密/身份验证层(在HTTP与TCP之间),这个系统的最初研发由网景公司(Netscape)进行,
并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法,现在
它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

3.HTTP协议的特点

HTTP 和 TCP 之间的关系简单地说,TCP 协议是 HTTP 协议的基石——HTTP 协议需要依靠 TCP 协议来传输数据。
在网络分层模型中,TCP 被称为“传输层协议”,而 HTTP 被称为“应用层协议”。
有很多常见的应用层协议是以 TCP 为基础的,比如“FTP、SMTP、POP、IMAP”等。
TCP被称为“面向连接”的传输层协议,关于它的具体细节,俺就不展开了(否则篇幅又失控了),
你只需知道:传输层主要有两个协议,分别是TCP和UDP,TCP比UDP更可靠,你可以把 TCP 协议想象成某个水管,
发送端这头进水,接收端那头就出水,并且 TCP 协议能够确保,先发送的数据先到达(与之相反,UDP不保证这点)。
HTTP协议如何使用 TCP 连接?HTTP对 TCP 连接的使用,分为两种方式:俗称“短连接”和“长连接”(“长连接”又称“持久连接”,
叫做“Keep-Alive”或“Persistent Connection”)
假设有一个网页,
里面包含好多图片,还包含好多外部的CSS文件和JS文件,在“短连接”的模式下,
浏览器会先发起一个 TCP 连接,拿到该网页的 HTML 源代码(拿到 HTML 之后,这个 TCP 连接就关闭了)。
然后,浏览器开始分析这个网页的源码,知道这个页面包含很多外部资源(图片、CSS、JS)。
然后针对每一个外部资源,再分别发起一个个 TCP 连接,把这些文件获取到本地
(同样的,每抓取一个外部资源后,相应的 TCP 就断开)。
相反,
如果是“长连接”的方式,浏览器也会先发起一个 TCP 连接去抓取页面,但是抓取页面之后,
该 TCP 连接并不会立即关闭,而是暂时先保持着(所谓的“Keep-Alive”),然后浏览器分析HTML 源码之后,发现有很多外部资源,就用刚才那个 TCP 连接去抓取此页面的外部资源。
在 HTTP 1.0 版本,默认使用的是“短连接”(那时候是 Web 诞生初期,网页相对简单,“短连接”的问题不大)。
到了1995年底开始制定 HTTP 1.1 草案的时候,网页已经开始变得复杂(网页内的图片、脚本越来越多了),
这时候再用短连接的方式,效率太低下了(因为建立 TCP 连接是有“时间成本”和“CPU成本”),
所以,在 HTTP 1.1 中,默认采用的是“Keep-Alive”的方式。

4. SSL/TLS协议的基本运行过程

SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,
然后用公钥加密信息,服务器收到密文后,用自己的私钥解密,但是这里有两个问题:

(1)、如何保证公钥不被篡改?

解决方法:将公钥放在数字证书中,只要证书是可信的,公钥就是可信的。

(2)、公钥加密计算量太大,如何减少耗用的时间?

解决方法:每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),
用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,
而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。

以上图片就是“握手阶段”涉及四次通信,需要注意的是,“握手阶段”的所有通信都是明文的。

5. SSL、HTTP和HTTPS协议的联系

SSL是Netscape公司所提出的安全保密协议,在浏览器(如Internet Explorer、Netscape Navigator)
和Web服务器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)
之间构造安全通道来进行数据传输,SSL运行在TCP/IP层之上、应用层之下,为应用程序提供加密数据通道,
它采用了RC4、MD5 以及RSA等加密算法,使用40位的密钥,适用于商业信息的加密。同时,Netscape公司相应开发了HTTPS协议并内置于其浏览器中,HTTPS实际上就是SSL over HTTP,
它使用默认端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。HTTPS协议使用SSL在发送方把原始数据进行加密,
然后在接受方进行解密,加密和解密需要发送方和接受方通过交换共知的密钥来实现,
因此,所传送的数据不容易被网络黑客截获和解密。然而,加密和解密过程需要耗费系统大量的开销,严重降低机器的性能,
相关测试数据表明使用HTTPS协议传输数据的工作效率只有使用HTTP协议传输的十分之一。

假如为了安全保密,将一个网站所有的Web应用都启用SSL技术来加密,并使用HTTPS协议进行传输,
那么该网站的性能和效率将会大大降低,而且没有这个必要,因为一般来说并不是所有数据都要求那么高的安全保密级别,
所以,我们只需对那些涉及机密数据的交互处理使用HTTPS协议,这样就做到鱼与熊掌兼得.
总之不需要用https的地方,就尽量不要用。

6. HTTPS协议的需求是什么?



7.HTTPS和HTTP的区别


8.HTTPS和HTTP的性能比较

HTTPS是为了安全性而设置的,要验证很多的信息,相对应http请求的速度肯定有点慢,
如果使用HTTPS的话很麻烦的,无意给服务器和客户端增加了很大的压力,所以,
平时最好不要使用HTTPS,如果牵扯到个人隐私或者是其他的什么重要信息就一定要这么做了。

http://www.mahaixiang.cn/internet/1522.html

http://www.mahaixiang.cn/internet/1233.html

http://www.techug.com/ssl-tls

28. HTTP、SSL/TLS和HTTPS协议的区别与联系相关推荐

  1. SSL TLS HTTP HTTPS SSH 分别是什么意思?

    HTTP + SSL/TLS = HTTPS SSL(Secure Sockets Layer,安全套接字协议) TLS(Transport Layer Security,传输层安全协议) HTTP( ...

  2. GET和POST的请求的区及HTTP和HTTPS协议的区别

    GET和POST的请求的区别 应用场景: GET 请求是一个幂等的请求,一般 Get 请求用于对服务器资源不会产生影响的场景,比如说请求一个网页的资源.而 Post 不是一个幂等的请求,一般用于对服务 ...

  3. HTTP协议和HTTPS协议的区别

    HTTP协议和HTTPS协议的区别 1.HTTP协议传输的数据都是未加密的,也就是明文的,使用HTTP协议传输隐私信息不安全: 2.HTTPS协议是由SSL(安全套接层,为网络通信提供安全及数据完整性 ...

  4. 接口测试之HTTP 与 HTTPS 协议的区别

    HTTP 与 HTTPS 协议的区别 HTTP又称为超文本传输协议 ,为了传输文件产生的,它属于应用层协议,基于传输层TCP协议,但随着互联网的演进,最初的静态文件传输已经演变成动态生成"文 ...

  5. SSL/TLS 以及HTTPS 介绍

    SSL/TLS 是一种协议, 用来保证网络传输的安全性. SSL/TLS 的定义与历史 SSL:Secure Sockets Layer ,安全套接层 TLS,Transport Layer Secu ...

  6. springboot配置SSL证书设置https协议访问的端口

    配置SSL证书需要证书文件 和 密钥 1. 将证书文件移动到resources目录下 2. 在yml配置文件中配置如下: server:port: 443 #服务端口ssl:key-store: cl ...

  7. nginx--基于openssl自颁发SSL证书实现HTTPS协议安全访问网站

    学习背景 大家在nginx安装(nginx安装教程)后,启动nginx,访问静态页面时,一般都是直接通过HTTP协议进行访问页面,如下图所示: 但实际应用中,有很多网站基于安全方面上的考虑,都有自己的 ...

  8. HTTP和HTTPS协议的区别

    什么是HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息 ...

  9. HTTP协议与HTTPS协议的区别

    HTTPS协议是以安全为目的的HTTP通道,比单纯的HTTP协议更安全,相当于HTTP的升级版. HTTPS的安全基础为SSL,就是在HTTP下加入SSL层,意思是HTTPS通过安全传输机制进行数据传 ...

  10. java 通过SSL/TLS加密https建立连接

    这个项目是基于与Ruby客户端进行通信,经过查看源代码,发现对方是经过TLS加密通信.第一次调试,尝试用serversocket与对方进行沟通,可以收到数据,但是无法获取http的包头数据,因此,将先 ...

最新文章

  1. 软考之路(1)——浅解网络基础知识
  2. 对话通信原理系列专题目录
  3. Kinect学习(四):提取深度数据
  4. python3的float数精度_Python numpy 浮点数精度问题
  5. leetcode 第 216 场周赛 整理
  6. python标准库--functools.partial
  7. linux 压缩命令
  8. 消息称《绝地求生》开发商Krafton将启动IPO 腾讯是大股东
  9. 黑马程序员--java基础知识注意点收录
  10. 安卓中的数据存储方式以及ContentProvider的简单介绍
  11. 拆装智伴机器人_智伴机器人软件下载-智伴下载 v4.2.8-pc6智能硬件网
  12. 如何写出高分essay?高分essay文章结构分析
  13. Introduction to Modern Cryptography (Second Edition)
  14. 第五章_卷积神经网络(CNN)
  15. 平台搭建---Hive使用介绍
  16. Sublime Text 3 快捷实现文件在浏览器中打开
  17. 扎实的PHP编程基础,PHP的一些基础编程题
  18. 燃气轮机发电系统matlab仿真模型,基于MATLAB的微型燃气轮机发电系统的建模及仿真.doc...
  19. 30 分钟 HTTP 查漏补缺之 Vary
  20. JS 位数不够自动左补0

热门文章

  1. 今天遇见了setTimeout()函数
  2. Flex中Image加载图片出错显示默认图片
  3. 分层结构的生活例子_AI的分层强化学习与人脑神经机制的联系
  4. AIX双机调整DB2配置
  5. Linux学习之旅(二)Linux文档操作
  6. The Game Of Life – 数据结构与算法的敲门砖
  7. 类Shiro权限校验框架的设计和实现
  8. 统计学习方法——第四章朴素贝叶斯及c++实现
  9. 【英语天天读】Develop Your Own Helping Rituals
  10. 整合xfire与struts2 (一)