基于TLS的HTTP
基于SSL/TLS的HTTP(Hyper Text Transfer Protocol over Secure Socket Layer,HTTPS),在TCP基础上建立TLS安全连接,经过TLS 安全连接实现对Web服务器的身份鉴别,浏览器和Web服务器之间传输的HTTP消息的保密性、完整性和源端鉴别.
HTTPS操作过程
浏览器鉴别Web服务器身份,但Web服务器无须鉴别浏览器身份。Web服务器为了证明自己的身份,需要向浏览器提供用于证明证书有效性的证书链。
首先在浏览器与 Web 服务器之间建立 TCP 连接,该 TCP 连接 Web 服务器端的端口号是443,表明用于传输TLS记录协议消息。
TLS经过4个阶段完成TLS安全连接建立过程,TLS安全连接建立过程中,浏览器完成对Web服务器的身份鉴别过程,浏览器和Web服务器之间完成压缩算法、加密算法、MAC算法、加密密钥、MAC密钥等安全参数的协商过程。成功建立TLS安全连接后,浏览器与 Web 服务器之间可以通过TLS安全连接实现 HTTP消息的安全传输过程。
HTTPS安全传输HTTP消息过程
建立TLS连接后,浏览器和Web服务器之间约定下述安全参数。
(1)加密算法:3DES。
(2)MAC算法:HMAC-SHA-1-160。
(3)浏览器 MAC密钥:K1(20B)。
(4)浏览器加密密钥:K11、K12、K13(3×8B,其中最高位不用)。
(5)Web服务器MAC密钥:K2(20B)。
(6)Web服务器加密密钥:K21、K22、K23(3×8B,其中最高位不用)。
(7)浏览器初始向量:IV1。
(8)Web服务器初始向量:IV2。
(9)发送序号:0。
(10)接收序号:0。
如果采用压缩算法的话,还需约定压缩算法类型、版本等。
首先分段 HTTP消息,分段的目的是使其长度适合TLS记录协议的净荷长度。如果采用压缩算法,用压缩算法压缩分段后的数据,压缩后的数据段和数据的协议类型、压缩后的数据段长度、发送序号串接在一起,进行HMAC-SHA-1-160运算,得到160位的 MAC,MAC添加在压缩后的数据段的尾部,构成需要传输的明文,再对明文进行3DES加密运算,产生密文,密文作为TLS记录协议报文的净荷,加上TLS记录协议首部,构成TLS记录协议报文,经过TLS安全连接传输给Web服务器。
浏览器和Web服务器的初始发送、接收序号为0,每发送一个TLS记录协议报文,发送序号增1,每接收一个TLS记录协议报文,接收序号增1。