自认为是菜鸟,所以绝不忽视基础性知识。
一、HTTP是干啥用滴?
首先,HTTP是一个网络协议,是专门用来传输Web内容的,以及Web页面包含的图片、CSS样式、JS脚本。下面是《HTTP权威指南》中对HTTP概念的解释。
HTTP 使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,它也能够 确保数据在传输的过程中不会被损坏或产生混乱。这样,用户在访问信息时就不用担心其完整性了,因此对用户来说,这是件好事。而对因特网应用程序开发人员来说也同样如此,因为这样就无需担心HTTP通信会在传输过程中被破坏、复制或产生畸变了。开发人员可以专注于应用程序特有细节的编写,而不用考虑因特网中存在的一些缺陷和问题。
二、SSL/TLS干嘛滴?
再着呢,说说SSL,SSL全称为“Secure Sockets Layer”(安全套接层),发明SSL协议,是为了解决HTTP协议传输内容可能被偷窥和篡改的问题。以至于TLS(Transport Layer Security)呢,是标准化之后的SSL。
三、HTTPS又是啥?
HTTPS,其实从英文可以看出来,就是HTTP和SSL/TLS的结合体嘛。下面引一段《HTTP权威指南》中对HTTPS概述的描写。
HTTPS就是在安全的传输层上发送的HTTP。HTTPS没有将未加密的HTTP 报文发送给TCP,并通过世界范围内的因特网进行传输 (参见图14-13日),它在将HTTP报文发送给TCP之前,先将其发送给了一个安全层,对其进行加密(参见图 14-13b ) 。 现在,HTTP安全层是通过SSL及其现代替代协议TLS来实现的。我们遵循常见的用法,用术语SSL来表示SSL或者TLS。
四、HTTPS协议的需求是啥?
1.兼容性
HTTPS协议需要与现有的HTTP协议兼容,以确保能够在现有的Web基础设施上进行部署和使用。HTTPS使用TLS(Transport Layer Security)协议来加密和保护通信,因此需要确保与TLS兼容的客户端和服务器。
2.可扩展性
HTTPS协议需要支持大规模的并发连接和高吞吐量的数据传输。为了满足这一需求,可以使用负载均衡器和分布式系统来分担服务器的负载,以保证系统的可扩展性和性能。
3.保密性
HTTPS协议需要确保通信中的数据保持机密,防止被未经授权的第三方窃取或篡改。为了实现保密性,HTTPS使用公钥加密算法来加密数据传输,并使用私钥进行解密。
4.完整性
HTTPS协议需要确保数据在传输过程中不被篡改或损坏。为了实现完整性,HTTPS使用消息摘要算法(如SHA-256)来生成数据的摘要,并将摘要与数据一起传输。接收方可以使用相同的算法验证数据的完整性。
5.真实性
HTTPS协议需要确保通信双方的身份真实可信。为了实现真实性,HTTPS使用数字证书来验证服务器的身份,并使用证书链验证机构(Certificate Authority)来验证证书的合法性和真实性。
6.性能
尽管HTTPS协议引入了加密和身份验证的开销,但它仍然需要提供高性能的数据传输。为了提高性能,可以使用缓存和CDN加速等技术来减少数据传输的延迟和提高响应速度。