HTTPS小结

参考连接:HTTPS科普扫盲帖
参考书籍:图解HTTPhtml

http存在的问题

通讯使用明文可能会被窃听

解决办法
通讯加密算法

HTTP 协议中没有加密机制, 但能够经过和SSL( Secure Socket Layer, 安全套接层) 或 TLS( Transport Layer Security, 安全层传输协议) 的组合使用, 加密 HTTP 的通讯内容。安全

用 SSL 创建安全通讯线路以后, 就能够在这条线路上进行 HTTP 通讯了。
与 SSL 组合使用的 HTTP 被称为TTPS( HTTP Secure, 超文本传输安全协议) 或 HTTP over SSL。服务器

内容加密ui

还有一种将参与通讯的内容自己加密的方式。 因为 HTTP 协议中没有加密机制, 那么就对 HTTP 协议传输的内容自己加密。 即把 HTTP 报文里所含的内容进行加密处理。在这种状况下, 客户端须要对 HTTP 报文进行加密处理后再发送请求。加密

为了作到有效的内容加密, 前提是要求客户端和服务器同时具有加密和解密机制。 主要应用在 Web 服务中。 有一点必须引发注意, 因为该方式不一样于 SSL 或 TLS 将整个通讯线路加密处理, 因此内容仍有被篡改的风险。spa

不验证通讯方的身份就可能遭遇假装

虽然使用 HTTP 协议没法肯定通讯方, 但若是使用 SSL 则能够。 SSL 不只提供加密处理, 并且还使用了一种被称为证书的手段, 可用于肯定方。
证书由值得信任的第三方机构颁发, 用以证实服务器和客户端是实际存在的。 另外, 伪造证书从技术角度来讲是异常困难的一件事。 因此只要可以确认通讯方( 服务器或客户端) 持有的证书, 便可判断通讯方的真实意图。code

没法证实报文完整性, 可能已遭篡改

所谓完整性是指信息的准确度。 若没法证实其完整性, 一般也就意味着没法判断信息是否准确。htm

HTTPS

HTTPS与HTTP的区别

clipboard.png

HTTPS其实就是secure http的意思啦,也就是HTTP的安全升级版。
HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。
TCP负责传输,HTTP则定义了数据如何进行包装
HTTPS相对于HTTP有哪些不一样呢?其实就是在HTTP跟TCP中间加多了一层加密层TLS/SSL。blog

关于HTTPS

HTTP+ 加 密 + 认 证 + 完 整 性 保 护 =HTTPS
SSL 提供认证和加密处理及摘要功能。
HTTPS 是身披 SSL 外壳的 HTTP
HTTPS 并不是是应用层的一种新协议。 只是 HTTP 通讯接口部分用 SSL( Secure Socket Layer) 和 TLS( Transport Layer Security) 协议代替而已。
一般, HTTP 直接和 TCP 通讯。 当使用 SSL 时, 则演变成先和 SSL 通讯, 再由 SSL和 TCP 通讯了。 简言之, 所谓 HTTPS, 其实就是身披 SSL 协议这层外壳的HTTP

clipboard.png

clipboard.png

SSL与TLS

通俗的讲,TLS、SSL实际上是相似的东西,SSL是个加密组件,负责对HTTP的数据进行加密。TLS是SSL的升级版。如今提到HTTPS,加密套件基本指的是TLS。
在采用 SSL 后, HTTP 就拥有了 HTTPS 的加密、 证书和完整性保护这些功能。SSL 是独立于 HTTP 的协议, 因此不光是 HTTP 协议, 其余运行在应用层的 SMTP和 Telnet 等协议都可配合 SSL 协议使用。

clipboard.png

HTTPS的加密机制

两种加密机制

clipboard.png

HTTPS 采用共享密钥加密和公开密钥加密二者并用的混合加密机制。 若密钥可以实现安全交换, 那么有可能会考虑仅使用公开密钥加密来通讯。 可是公开密钥加密与共享密钥加密相比, 其处理速度要慢。
因此应充分利用二者各自的优点, 将多种方法组合起来用于通讯。 在交换密钥环节使用公开密钥加密方式, 以后的创建通讯交换报文阶段则使用共享密钥加密方式。

clipboard.png

HTTPS 的安全通讯机制/SSL过程

clipboard.png

clipboard.png

步骤 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 可以查知报文是否遭到篡改, 从而保护报文的完整性。

clipboard.png

相关文章
相关标签/搜索