HTTP和HTTPS有什么区别?
一.首先说一下HTTP的缺点:
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此又可能遭遇伪装
- 违法证明报文的完整性,所以 又可能已经遭篡改。
那么https肯定会弥补前面这几大主要问题。
二.简概HTTPS
HTTP+加密+认证+完整性保护 = HTTPS
三.HTTPS功能实现详述
3.1HTTPS就是身披SSL协议这层外壳的http
HTTPS并非 是应用层的一种新协议,只是HTTP通信接口部分用SSL和TLS协议代替而已
通常,HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了,简单的说,HTTPS就是身披SSL协议这层外壳的http;
在采用 SSL 后,HTTP 就拥有了 HTTPS 的加密、证书和完整性保护这些功能。
3.1.1加密实现
共享**:
加密和解密同用一个**的方式称为共享**加密(Common key crypto system),也被叫做对称**加密。
缺点:在**传输过程中,**可能被攻击者窃取,这样一来也就失去了加密的意义,所以基本使用公开**加密
公开**加密:
发送密文的一方使用对方的公开**进 行加密处理,对方收到被加密的信息后,再使用自己的私有** 进行解密
HTTPS采用混合加密机制:
HTTPS 采用共享**加密和公开**加密两者并用的混合加密 机制。若**能够实现安全交换,那么有可能会考虑仅使用公开 **加密来通信。但是公开**加密与共享**加密相比,其处 理速度要慢。
3.1.2证明公开**正确性的证书
公开**缺点:
无法证明公开**本身就是货真价实的公开**。
例如:
正准备和某台服务器 建立公开**加密方式下的通信时,如何证明收到的公开**就是原
本预想的那台服务器发行的公开**。或许在公开**传输途中,真 正的公开**已经被攻击者替换掉了。
如何解决上面问题?
可以使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开**证书。
证书 作用步骤:
- 服务器 的运营人员向数字证书认证机构提出公开**的申请。数字证书认证 机构在判明提出申请者的身份之后,会对已申请的公开**做数字签 名,然后分配这个已签名的公开**,并将该公开**放入公钥证书 后绑定在一起。
- 接到证书的客户端可使用数字证书认证机构的公开**,对那张证书 上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:
一,认证服务器的公开**的是真实有效的数字证书认证机构。二, 服务器的公开**是值得信赖的。
3.1.3完整性保护
HTTPS通信步骤:步骤 1: 客户端通过发送 Client Hello 报文开始 SSL 通信。报文中包 含客户端支持的 SSL 的指定版本、加密组件(Cipher Suite)列表(所 使用的加密算法及**长度等)。
步骤 2: 服务器可进行 SSL 通信时,会以 Server Hello 报文作为应答。和客户端一样,在报文中包含 SSL 版本以及加密组件。服务器的 加密组件内容是从接收到的客户端加密组件内筛选出来的。
步骤 3: 之后服务器发送 Certificate 报文。报文中包含公开**证 书。
步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端,最初阶 段的 SSL 握手协商部分结束。
步骤 5: SSL 第一次握手结束之后,客户端以 Client Key Exchange 报 文作为回应。报文中包含通信加密中使用的一种被称为 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 能够查知报文是否遭到篡 改,从而保护报文的完整性。
3.1.3完整性保护中内容复制自《图解HTTP》,实在不知道怎么总结可用更简单明了了
四,为什么不一直使用HTTPS?
4.1HTTPS 比 HTTP 要慢 2 到 100 倍 (原因):
SSL 的慢分两种:
- 一种是指通信慢。
- 另一种是指由于大量消耗 CPU 及内存等资源,导致处理速度变慢。
和使用 HTTP 相比,网络负载可能会变慢 2 到 100 倍。除去和 TCP 连接、发送 HTTP 请求 • 响应以外,还必须进行 SSL 通信, 因此整体上处理通信量不可避免会增加。
另一点是 SSL 必须进行加密处理。在服务器和客户端都需要进行 加密和解密的运算处理。因此从结果上讲,比起 HTTP 会更多地 消耗服务器和客户端的硬件资源,导致负载增强。
针对速度变慢这一问题,并没有根本性的解决方案,我们会使用 SSL 加速器这种(专用服务器)硬件来改善该问题。该硬件为 SSL 通信专用硬件,相对软件来讲,能够提高数倍 SSL 的计算速 度。仅在 SSL 处理时发挥 SSL 加速器的功效,以分担负载。
4.2 证书费用
要进行 HTTPS 通信,证书是必不可少的。而使用的证书必须向认 证机构(CA)购买。证书价格可能会根据不同的认证机构略有不 同。
//以上就是本期 主要关于HTTPS的文章,希望大家 喜欢,多多点赞????