问题是什么
这是一个防火墙设备测试,『测试仪在使用HTTPS访问防火墙WebAuth的时候认证失败。』
后来排除了和Auth相关,问题的内容遂简化为『使用HTTPS访问防火墙的Web失败』。
HTTPS 和 SSL/TLS
HTTPS是HTTP Secure,被SSL/TLS加密的HTTP,安全的HTTP。
HTTP(不带S)是我们经常用的浏览网页的一个协议,工作在应用层。它的主要用途是帮我们传输网页,以及网页中包含的各种内容,比如图片、css、js。这么多年了,大家都在用它。
可是,HTTP天生有个缺陷:是不被加密的明文传输。世界上有一种人身上有个标签——黑客,黑客有一种功夫叫『嗅探』,用HTTP浏览的内容很容易就被偷窥了。世界上还有一种人身上有个标签——流氓,流氓有种功夫叫『篡改』,譬如某些运营商在你浏览网页的时候给你弹一些网站本来没有的广告,就是范例。
拿什么拯救HTTP?SSL/TLS。
SSL 是洋文“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。SSL本是网景公司上个世纪90年代的起草的协议,后来一不小心就流行了起来,于是1999年写到了RFC里成为通用标准。SSL共经历了1.0、2.0、3.0三个版本,之后升级为TLS。TLS是“Transport Layer Security”的缩写,中文叫做“传输层安全协议”。顾名思义,TLS就不单单是面向HTTP了,传输层以上的应用都可以使用TLS加密,比如FTP、POP、SMTP、Telnet。
分析问题
防火墙WebAuth同时开启了HTTP和HTTPS, HTTP可以访问而HTTPS不能访问,说明问题与SSL/TLS相关。最好能抓包观察。
这里提一下抓包工具。一开始使用Ethereal查看抓包,效果很糟糕,解析不出SSL协议。改用wireshark,协议解析的稳又准,很快就知道根因(root cause)了。
根因:测试仪携带的Cipher Suite RC4不被Server(防火墙)支持。
结论
使用测试仪模拟HTTPS访问web要注意Server支持的SSL version和Cipher Suites,SSL1.0到3.0都是不安全的,TLS1.0从SSL3.0发展而来替换SSL3.0,TLS1.0以后的版本是推荐版本。而Cipher Suites在不同Server上有不同的支持。比如本次Server不支持的RC4,由于RC4算法存在弱点,2015年2月所发布的 RFC 7465 规定禁止在TLS中使用RC4加密算法[1]。
下表是SRX防火墙支持的Cipher: