HTTP与HTTPS协议概述
- HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。
- HTTPS协议(Hypertext Transfer Protocol Secure,超文本传输安全协议):是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。历史上,HTTPS连接经常用于万维网上的交易支付和企业信息系统中敏感信息的传输。在2000年代晚期和2010年代早期,HTTPS开始广泛使用于保护所有类型网站上的网页真实性,保护账户和保持用户通信,身份和网络浏览的私密性。
如上图所示, HTTPS 相比 HTTP 是在TCP与HTTP之间多加了一层 SSL/TLS(Transport Layer Security,安全传输层协议),SSL/TCP 是介于TCP和HTTP之间的一层安全协议,不影响原有的TCP协议和HTTP协议。SSL与TLS基本概念如下:
- SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
- TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。
HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免此类问题发生,所以可用一个公式表示HTTP与HTTPS之间的关系:HTTP+加密+认证+完整性保护 = HTTPS。
HTTPS连接的建立过程
- 客户端发送请求到服务器端;
- 服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在;
- 客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端;
- 服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端;
- 客户端使用共享密钥解密数据;
- SSL加密建立。