HTTPS(身披SSL协议的HTTP)
参考链接:
HTTP 和 HTTPS 区别
HTTP是明文传输未加密,安全性差,HTTPS(HTTP + SSL)数据传输是加密的,安全性较好
HTTPS协议需要到CS申请——收费
HTTP页面响应速度比HTTPS快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
默认端口不同
HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
HTTPS基础
HTTPS = HTTP + 加密 + 认证 + 完整性保护
HTTPS 经由 HTTP 进行通信,但是利用SSL/TLS来进行加密数据包。
SSL 提供 加密处理 和 认证 以及 摘要功能
HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
一般,HTTP是与TCP直接通信,现在使用SSL,HTTP先与SSL通信,SSL和TCP通信。
SSL 和 TLS
通俗的讲,TLS、SSL其实是类似的东西,SSL是个加密套件,负责对HTTP的数据进行加密。TLS是SSL的升级版。现在提到HTTPS,加密套件基本指的是TLS。
SSL 是独立于 HTTP 的协议, 所以不光是 HTTP 协议, 其他运行在应用层的 SMTP和 Telnet 等协议均可配合 SSL 协议使用。
传输流程:原先是应用层将数据直接给到TCP进行传输,现在改成应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输。如图:
HTTPS 的工作原理
HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:
客户端发起 HTTPS 请求 ——TCP 三次握手之后(传输层上的TCP和UDP(三次握手))
服务端的配置 ,客户端验证服务器数字证书(这套证书其实就是一对公钥和私钥 )
传送证书,这个证书就是公钥,其中包含了证书的颁布机构,过期时间等
客户端解析证书,这个部分的工作是客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。
如果证书没有问题,那么就生成一个随机值,然后用证书对改随机值进行加密
传送加密信息,此时传送的是用证书加密后的随机值,目的就是让服务器得到这个随机值,以后客户端和服务器端的通信就可以通过这个随机值来进行加密解密了。
服务器端解密信息,服务器端用私钥解密后,得到客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这要除非知道私钥,不然无法获取内容,而客户端和服务器端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就足够安全。
传输加密后的信息,这部分信息是服务器端用私钥加密后的信息,可以在客户端还原。
客户端解密信息,客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。
HTTPS如何加密数据(看不懂)
加密分为:对称加密和非对称加密
对称加密
流程:客户端和服务器端进行一次私密对话:
1.每次对话时,服务器端都要给客户端一个秘钥
2.客户端把数据加密以后,发送给服务器端
3.服务器端使用秘钥解密接收到的数据
优点:效率高
缺点:不够安全,万一黑客把秘钥和密文截取了,他就可以解密这段数据了
非对称加密
流程:客户端和服务器端进行一次私密对话:
1.服务器端要给客户端一个公钥(全世界都知道),服务器端保留这个服务器对应的的私钥
2.客户端用公钥把数据加密以后,发送给服务器端
3.服务器端使用对应的的私钥解密接收到的数据
优点:效率低
缺点:不够安全,万一黑客把密文截取了(公钥早就知道了),他就可以解密这段数据了
HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。 若密钥能够实现安全交换, 那么有可能会考虑仅使用公开密钥加密来通信。 但是公开密钥加密与共享密钥加密相比, 其处理速度要慢。所以应充分利用两者各自的优势, 将多种方法组合起来用于通信。 在交换密钥环节使用公开密钥加密方式, 之后的建立通信交换报文阶段则使用共享密钥加密方式。
另一种解释(一人一种理解 -.-'):
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的简单描述如下:
1.浏览器将自己支持的一套加密规则发送给网站。
2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3.获得网站证书之后浏览器要做以下工作:
a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4.网站接收浏览器发来的数据之后要做以下的操作:
a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
b) 使用密码加密一段握手消息,发送给浏览器。
5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试。另外,HTTPS一般使用的加密与HASH算法如下:
非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256
其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。由于浏览器生成的密码是整个数据加密的关键,因此在传输的时候使用了非对称加密算法对其加密。非对称加密算法会生成公钥和私钥,公钥只能用于加密数据,因此可以随意传输,而网站的私钥用于对数据进行解密,所以网站都会非常小心的保管自己的私钥,防止泄漏。
HTTPS 的安全通信机制/SSL过程(看不懂)
步骤 1: 客户端通过发送 Client Hello
报文开始 SSL 通信。 报文中包含客户端支持的 SSL 的指定版本、 加密组件( Cipher Suite) 列表( 所使用的加密算法及密钥长度等) 。步骤 2: 服务器可进行 SSL 通信时, 会以 Server Hello
报文作为应答。 和客户端一样, 在报文中包含 SSL 版本以及加密组件。 服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
步骤 3: 之后服务器发送 Certificate
报文。 报文中包含公开密钥证书。
步骤 4: 最后服务器发送 Server Hello Done
报文通知客户端, 最初阶段的 SSL 握手协商部分结束。
步骤 5: SSL 第一次握手结束之后, 客户端以 Client KeyExchange
报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-master secret
的随机密码串。 该报文已用步骤 3 中的公开密钥进行加密。
步骤 6: 接着客户端继续发送 Change Cipher Spec
报文。 该报文会提示服务器, 在此报文之后的通信会采用 Pre-master secret
密钥加密。
步骤 7: 客户端发送 Finished
报文。 该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功, 要以服务器是否能够正确解密该报文作为判定标准。
步骤 8: 服务器同样发送 Change Cipher Spec
报文。
步骤 9: 服务器同样发送 Finished
报文。
步骤 10: 服务器和客户端的 Finished
报文交换完毕之后, SSL 连接就算建立完成。当然, 通信会受到 SSL 的保护。 从此处开始进行应用层协议的通信, 即发送 HTTP
请求。
步骤 11: 应用层协议通信, 即发送 HTTP
响应。
步骤 12: 最后由客户端断开连接。 断开连接时, 发送 close_notify
。这步之后再发送 TCP FIN 报文来关闭与 TCP 的通信。
在以上流程中, 应用层发送数据时会附加一种叫做 MAC
( Message Authentication Code) 的报文摘要。 MAC 能够查知报文是否遭到篡改, 从而保护报文的完整性。
HTTPS(身披SSL协议的HTTP)的更多相关文章
- 聊聊HTTPS和SSL协议
本文为转载,原文链接http://www.techug.com/https-ssl-tls,作者不详. 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 1. 大致了解几个基本术语(H ...
- SSH协议、HTTPS中SSL协议的完整交互过程
1.(SSH)公私钥认证原理 服务器建立公钥:每一次启动sshd服务时,该服务会主动去找/etc/ssh/ssh_host*的文件 客户端通过ssh工具进行连接,如Xshell,SecureCRT 服 ...
- wamp下安装https 实现 ssl 协议,主要是编写小程序通讯
也不知道腾讯为啥要这个限制,是想卖他的服务器资源么 简单几句话 1 wamp3.0.X的版本不行,我折腾了一天半,放弃了,换成wamp2.5 一次通过 2 证书 去腾讯云申请,单独域名的可以申请免费的 ...
- 【转】SSL协议、SET协议、HTTPS简介
一.SSL协议简介 SSL是Secure Socket Layer的缩写,中文名为安全套接层协议层.使用该协议后,您提交的所有数据会首先加密后,再提交到网易邮箱,从而可以有效防止黑客盗取您的用户名.密 ...
- 聊聊HTTPS和SSL/TLS协议
要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...
- 浅谈HTTPS和SSL/TLS协议的背景和基础
相关背景知识要说清楚HTTPS协议的实现原理,至少要需要如下几个背景知识.大致了解几个基础术语(HTTPS.SSL.TLS)的含义大致了解HTTP和TCP的关系(尤其是"短连接"和 ...
- 浅谈 HTTPS 和 SSL/TLS 协议的背景与基础
来自:编程随想 >> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 ...
- 好程序员带你了解一下HTTPS和SSL/TLS协议的背景与基础
>> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 TCP 的关系(尤其 ...
- 聊聊HTTPS和SSL/TLS协议 分类: 计算机网络 2015-07-11 21:41 4人阅读 评论(0) 收藏
要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 2. 大致了解 HTTP 和 TCP 的关系(尤其是"短连接 ...
随机推荐
- Day4 - K - Ant Trip HDU - 3018
Ant Country consist of N towns.There are M roads connecting the towns. Ant Tony,together with his fr ...
- TS文件极简合并
TS文件是可以直接通过二进制拷贝连接的方式进行合并的,一般采用如下的命令行参数:copy /b 1.ts+2.ts+3.ts new.ts 这个例子就是将1.ts.2.ts.3.ts三个文件按顺序连接 ...
- 软件包管理:RPM包管理-yum在线管理
CentOS 是免费的的 RedHat需要付费 1.IP地址配置 setup #使用setup工具 (这种方式配置的永久有效 同时还可以配置掩码 网关等) 直接输入setup就会弹出(注意的是该命令 ...
- 九十四、SAP中ALV事件之八,显示功能按钮栏
一.我们把其他代码都注释掉,直接写一行调用 SET PF-STATUS 'TIANPAN_TOOLS'. 二.运行程序,会看到我们上一篇所添加的相关功能栏图标, 三.点击不同图标,会按程序代码,有不同 ...
- 113-PHP使用instanceof判断变量是否为某个类对象
<?php class ren{ //定义人类 } class mao{ //定义猫类 } $ren=new ren(); //实例化一个人类的对象 $mao=new mao(); //实例化一 ...
- 19 01 18 dango 模型
定义属性 Django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表创建自动增长的主键列,每个模型只能 ...
- 大二暑假第一周总结--初次安装配置Hadoop
本次配置主要使用的教程:http://dblab.xmu.edu.cn/blog/install-hadoop-in-centos/ 以下是自己在配置中的遇到的一些问题和解决方法,或者提示 一.使用虚 ...
- 创建Oracle序列sequence
create sequence SEQ_ID minvalue 1 maxvalue 99999999 start with 1 increment by 1 nocache order; 建解发器代 ...
- 关于javascript中this 指向的4种调用模式
this指向问题绝对可以排js 的top 5最难和最重点的问题,初学者常常搞不清楚this指向哪里,特别是学过java和c#的人,想当年俺也迷糊了好久,直到遇到蝴蝶书,主要是因为js和主流的面向对象语 ...
- UVA 11235 RMQ算法
上次的湘潭赛的C题,用线段树敲了下还是WA,不知道为何,我已经注意了处理相同数据,然后他们当时用的RMQ. 所以学了下RMQ,感觉算法思想是一样的,RMQ用了DP或者是递推,由单个数到2^k往上推,虽 ...