通过阅读《计算机网络–自顶向下方法》,以及结合最近面试的一些经历,作此笔记进行梳理和总结,也为日后的回顾作基底。
文章目录
1)HTTPS基本概述
1.1 什么是HTTPS?
HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)是最常见的 HTTP 安全版本。
- HTTPS 将 HTTP 协议与一组强大的对称、非对称和基于证书的加密技术结合在一起,使得HTTPS不仅很安全,而且很灵活。
- 使用HTTPS时,所有的HTTP请求和响应数据在发送到网络之前,都要进行加密。
- HTTPS在HTTP下面提供了一个传输级的密码安全层(可以使用SSL或者TLS):
- HTTPS是位于安全层之上的HTTP,这个安全层位于TCP之上。
- HTTPS在HTTP下面提供了一个传输级的密码安全层(可以使用SSL或者TLS):
1.2 为什么需要HTTPS?
人们会用Web事务来处理一些重要的事情,如果没有强有力的安全保证,人们就无法安心地进行网络购物或者使用银行业务。因此Web需要一种安全的HTTP形式。
- 一些提供认证(基本认证和摘要认证)和报文完整性检查的轻量级方法对于大规模的购物、银行事务,或者对访问机密数据来说,不够强大。
对于大规模的购物、银行事务等重要的事务,需要将HTTP和数字加密技术结合起来使用,才能确保安全。
我们需要一种能够提供下列功能的HTTP安全技术:
- 服务器认证:客户端知道它们是在和真正的而不是伪造的服务器通话。
- 客户端认证:服务器知道它们是在和真正的而不是伪造的客户端通话。
- 完整性:客户端和服务器的数据不会被修改。
- 加密:客户端和服务器的对话是私密的,无需担心被窃听。
- 效率:一个运行得足够快的算法,以便低端的客户端和服务器使用。
- 普适性:基本上所有的客户端和服务器都支持这些协议。
- 管理的可扩展性:在任何地方的任何人都可以立即进行安全通信。
- 适应性:能够支持当前最知名的安全方法。
2)面试常问之HTTPS是如何实现的?
2.1 如何告知Web服务器执行HTTPS?
安全HTTP是可选的,所以对Web服务器发起请求时,需要以一种方式告知Web服务器去执行HTTP的安全协议版本,这是通过URL实现的。
- 通常,非安全HTTP的URL方案前缀是http,例如:
http://www.abc.com/index.html - 在安全HTTPS协议中,URL的方案前缀是https,例如:
https://efg.com/aaa?bbb=ccc
请求一个客户端(如Web浏览器)对某Web资源执行某事务时,它会去检查URL的方案:
- 如果URL方案是http,客户端就会打开一条到服务器端口80(默认情况下)的TCP连接,并向其发送HTTP命令。
- 如果URL方案是https,客户端则会打开一条到服务器端口443(默认情况下)的连接,并与服务器“握手”(客户端和服务器初始化SSL层,对加密参数进行沟通并交换密码),然后客户端将请求报文发送给安全层(因为这些报文发送给TCP前需要进行加密)。