http无状态明文传输,只要截获传输报文,就可以直接读取信息。
h
t
t
p
使
用
端
口
80
\orange{http使用端口80}
http使用端口80
https在http基础上加入了ssl协议,ssl协议依靠证书验证服务器身份,并为报文加密。
h
t
t
p
s
使
用
端
口
443
\orange{https使用端口443}
https使用端口443
关 于 加 密 方 式 : \red{关于加密方式:} 关于加密方式:
对
称
加
密
\orange{对称加密}
对称加密
加密密钥与解密密钥相同
非
对
称
加
密
\orange{非对称加密}
非对称加密
分为公钥和私钥,客户端公钥加密的报文,服务端可以用私钥解析。
h t t p s 通 信 步 骤 : \red{https通信步骤:} https通信步骤:
( 1 ) T C P 三 次 握 手 : \orange{(1)TCP三次握手:} (1)TCP三次握手:
客户端发送SYN(syn=a),请求建立TCP连接。
服务端发送SYN(syn=b)和ACK(ack=a+1)包。
客户端发送ACK(ack=b+1)包,完成三次握手。
( 2 ) H T T P S 请 求 过 程 : \orange{(2)HTTPS请求过程:} (2)HTTPS请求过程:
客服端发送https请求(包括一个随机数,用于生成对称密钥,支持的加密算法,支持的通信协议版本)
服务端确认通信协议版本,确认加密算法,发送证书和一个随机数,用于对称加密
客户端验证服务器证书(验证证书的方法通常内嵌在客服端系统中),取出公钥,用公钥加密随机数,协商加密方式。
服务端收到随机数后,生成本次会话的会话密钥,发送握手结束通知,表示握手协商阶段结束。
( 3 ) T C P 四 次 挥 手 : \orange{(3)TCP四次挥手:} (3)TCP四次挥手:
客户端发送FIN,请求关闭。
服务端发送ACK
(中间可能由于拥塞,服务端丢包,所以不能直接发送FIN,要等所有包都收到后,服务端再发送FIN)
服务端发送FIN
客户端发送ACK