概述
HTTPS就是在安全的传输层上发送的HTTP。它在将HTTP报文发送给TCP之前, 先将其发送给了一个安全层,对其进行加密。
HTTPS VS HTTP
image.png
方案
当请求一个客户端对某web资源执行某事务时, 它会去检查URL的方案。
- 如果URL的方案是http,客户端就会打开一条到服务器端口80的连接, 并向其发送http命令
- 如果是https,客户端就会
(1) 打开一条到服务器端口443的连接
(2) 然后与服务器握手 ,以二进制格式与服务器交换一些SSL安全参数,附上加密的http命令。
建立安全传输
未加密的HTTP中
客户端会打开一条到web服务器端口80的tcp连接,发送一条请求报文,接收一条响应报文,关闭连接
https中
- 打开开一条到web服务器端口443的连接,
- 一旦建立了tcp连接,客户端和服务器就会初始化ssl层,对加密的参数进行沟通,并交换密钥。
- 握手完成之后, SSL初始化就完成了,客户端就可以将请求报文发送给安全层。
-
在将报文发送给TCP之前,要先对其进行加密
image.png
SSL握手
在发送已加密的HTTP报文之前,客户端和服务器要进行一次SSL握手,在这个握手过程中,它们要完成的工作有
- 交换协议版本号
- 选择一个两端都了解的密码
- 对两端的身份进行认证
- 生成临时的会话密钥,以便加密信道
简化SSL握手