Web应用安全威胁与防治
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 HTTPS简介

超文本传输安全协议(Hypertext Transfer Protocol Secure,HTTPS)是超文本传输协议和SSL/TLS的组合,用以提供加密通信及对网络服务器身份的鉴定。HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输。HTTPS不应与在RFC 2660中定义的安全超文本传输协议(S-HTTP)相混。

网景在1994年创建了HTTPS,并应用在网景导航者浏览器中。最初,HTTPS是与SSL一起使用的,在SSL逐渐演变到TLS时,最新的HTTPS也由在2000年5月公布的RFC 2818正式确定下来。

HTTPS的主要思想是在不安全的网络上创建安全信道,并可在使用适当的加密套件和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的保护。

HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,当且仅当:

1.用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构。

2.用户相信证书颁发机构仅信任合法的网站。

3.被访问的网站提供了一个有效的证书,意即它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告)。

4.该证书正确地验证了被访问的网站(例如,访问https://ww.example.com时收到了给“Example Inc.”而不是其他组织的证书)。

5.或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被窃听者破坏。

与HTTP的URL由“http://”起始且默认使用端口80不同,HTTPS的URL由“https://”起始且默认使用端口443。HTTPS报文中的任何东西都被加密,包括所有报头和载荷。除了可能的选择密文攻击之外,一个攻击者所能知道的只有在两者之间有一连接这一事实。虽然最近出现了SSL Beast攻击,但是,它是建立在使用老版本的SSL/TLS协议之上,利用了老版本协议的一个漏洞,如果使用最新版的安全协议,问题就自然解决了。

因为SSL在HTTP之下工作,对上层协议一无所知,所以SSL服务器只能为一个IP地址/端口组合提供一个证书。这就意味着在大部分情况下,使用HTTPS的同时支持基于名字的虚拟主机是不很现实的。一种叫SNI(Server Name Indication)的方案通过在加密连接创建前向服务器发送主机名解决了这一问题。Firefox 2、Opera 8和运行在Windows Vista的Internet Explorer 7都加入了对SNI的支持。