HTTPS

细节介绍

HTTPS是最常见的HTTP安全版本。它得到了很广泛的应用

HTTPS将HTTP协议与一组强大的对称、非对称和基于证书的加密技术结合在一起,使得HTTPS不仅很安全,而且很灵活,很容易在处于无需状态的、分散的全球互联网上进行管理

HTTPS概述

就是在安全的传输层上发送的HTTP,现在,HTTP安全层是通过SSL及其现代替代协议TLS来实现的

HTTP 应用层
TCP 传输层
IP 网络层
网络接口 数据链路层
HTTP 应用层
SSL or TLS 安全层
TCP 传输层
IP 网络层
网络接口 数据链路层

HTTPS方案

请求一个客户端(比如Web浏览器)对某Web资源执行某事务时,它会去检查URL的方案

  • 如果URL的方案为http,客户端就会打开一条到服务器端口80(默认)的连接,并向其发送老的HTTP命令
  • 如果URL的方案为https,客户端就会打开一条到服务器端口443(默认)的连接,然后与服务器握手,以二进制格式与服务器交换一些SSL安全参数,附上加密的HTTP命令

比较

建立安全传输

HTTP和HTTPS事务

SSL握手

在通过网络传输任何已加密的HTTP数据之前,SSL已经发送了一组握手数据来建立通信连接了

它们要完成以下工作:

  • 交换协议版本号
  • 选择一个两端都了解的密码
  • 对两端的身份进行认证
  • 生成临时的会话密钥,以便加密信道

简化版SSL握手

站点证书的有效性

SSL自身不要求用户检查Web服务器证书。但大部分现代浏览器都会对证书进行简单的完整性检查,并为用户提供进行进一步彻查的手段

  • 日期检测
  • 签名颁布者可信度检测
  • 签名检测
  • 站点身份检测

通过代理以隧道形式传输安全流量

客户端通常会用Web代理服务器代表它们来访问Web浏览器

但只要客户端开始用服务器的公开密钥对发往服务器的数据进行加密,代理就再也不能读取HTTP首部了

代理不能读取HTTP首部,就无法知道应该将请求转向何处了

解决这个问题一种常见的技术就是HTTPS SSL隧道协议

使用HTTPS隧道协议,客户端首先要告知代理,它想要连接的安全主机和端口。这是在开始加密之前,以明文的形式告知的,所以代理可以理解这条信息

HTTP通过新的名为CONNECT的扩展方法来发送明文形式的端点信息,提供了由冒号分隔的安全原始服务器的主机名和端口号

1
2
3
4
5
6
CONNECT home.netscape.com:443 HTTP/1.0
User-agent:Mozilla/1.1N
----------------------------------------------
HTTP/1.0 200 Connection established //连接成功
Proxy-agent: Netscape-Proxy/1.1


HTTPS
https://blog-theta-ten.vercel.app/2021/10/03/HTTPS/
作者
Chen
发布于
2021年10月3日
许可协议