URL过滤HTTPS站点的加密流量检测原理,以及HTTPS和HTTP的区别
1、HTTP与HTTPS的区别
访问网站通常使用HTTP协议,而现在越来越多的网站使用HTTPS协议(使用HTTP协议进行通信,但利用SSL/TLS来加密数据包),如https://www.facebook.com就是使用HTTPS协议交互。
HTTP协议交互内容为明文,能提取完整的URL明文信息。
HTTPS协议交互内容为密文,无法获取到完整的URL信息。(但SSL握手时携带了部分URL信息,内容为明文。)
2、HTTPS加密流量检测原理
华为防火墙URL过滤的原理是,分别从SSL握手的报文(Client Hello、Certificate报文)中,提取含有URL信息的字段,三个字段包括:SNI(Server Name Indication)、CN(Common Name)、SAN(Subject Alternative Name),将提取出的URL信息输出给URL模块进行检测,并根据检测结果进行后续动作处理。
下面举例说明了三个字段在SSL报文中的位置。
客户端Client Hello报文的SNI字段:
服务器Certificate报文中的CN字段:
服务器Certificate报文中的SAN字段:
3、HTTPS检测限制
第2部分所提到的三个字段,只包含了域名信息(HOST),未携带完整的URL信息,因此,无法做到精准的URL检测。而如果是HTTP协议的交互,就可以获取到完整的URL信息,做到精确的URL检测。
比如,谷歌地图的网站https://www.google.com/maps,查看SSL握手报文可以发现,该网站使用HTTPS协议,HOST字段是www.google.com,不包含maps字段,所以URL模块只能检测www.google.com,无法检测www.google.com/maps。所以需要放行www.google.com,才能放行谷歌地图。