HTTPS
| HTTP |
| 持久 · 压缩 · 安全 |
| 头字段 |
| ETag · Cookie · Referrer · Location |
| HTTP状态码 |
| 301 Moved permanently |
| 302 Found |
| 303 See Other |
| 403 Forbidden |
| 404 Not Found |
超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定。HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输。HTTPS不应与在RFC 2660中定义的安全超文本传输协议(S-HTTP)相混。
目录 |
[编辑] 主要思想
HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密套件和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的保护。
HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,当且仅当:
- 用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构;
- 用户相信证书颁发机构仅信任合法的网站;
- 被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
- 该证书正确地验证了被访问的网站(如,访问
https://example时收到了给“Example Inc.”而不是其它组织的证书); - 或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被窃听者破坏。
[编辑] 浏览器实现
当连接到一提供无效证书的网站时,较旧的浏览器会使用一对话框询问用户是否继续,而较新的浏览器会在整个窗口中显示警告;较新的浏览器也会在地址栏中凸显网站的安全信息(如,Extended validation证书通常会使地址栏变绿)。
大部分浏览器在网站含有由加密和未加密内容组成的混合内容时,会发出警告。
|
大部分浏览器使用地址栏来提示用户到网站的连接是安全的,图示Firefox
|
电子前哨基金会曾经建议“在理想的世界中,任何网络请求都能默认为HTTPS的。”该基金会也曾制作了Firefox附加组件来推广这一建议。[1][2]
[编辑] 技术细节
[编辑] 与HTTP的差异
与HTTP的URL由“http://”起始且默认使用端口80不同,HTTPS的URL由“https://”起始且默认使用端口443。
HTTP是不安全的,且攻击者通过监听和中间人攻击等手段,可以获取网站帐户和敏感信息等。HTTPS被设计为可防止前述攻击,并(在没有使用旧版本的SSL时)被认为是安全的。
[编辑] 网络层
HTTP工作在应用层(OSI模型的最高层),但安全协议工作在一个较低的子层:在HTTP报文传输前对其加密,并在到达时对其解密。严格地讲,HTTPS并不是一个单独的协议,而是对工作在一加密连接(TLS或SSL)上的常规HTTP协议的称呼。
HTTPS报文中的任何东西都被加密,包括所有报头和荷载。除了可能的CCA(参见限制小节)之外,一个攻击者所能知道的只有在两者之间有一连接这一事实。
[编辑] 服务器设置
要使一网络服务器准备好接受HTTPS连接,管理员必须创建一数字证书,并交由证书颁发机构签名以使浏览器接受。证书颁发机构会验证数字证书持有人和其声明的为同一人。浏览器通常都预装了证书颁发机构的证书,所以他们可以验证该签名。
[编辑] 获得证书
由证书颁发机构签发的证书有免费的[3][4],也有每年收费13美元[5]到1500美元[6]不等的。
一个组织也可能有自己的证书颁发机构,尤其是当设置浏览器来访问他们自己的网站时(如,运行在公司局域网内的网站,或大学的)。他们可以容易地将自己的证书加入浏览器中。
此外,还存在一个人到人的证书颁发机构,CAcert。
[编辑] 作为访问控制
HTTPS也可被用作客户端认证手段来将一些信息限制给合法的用户。要做到这样,管理员通常会给每个用户创建证书(通常包含了用户的名字和电子邮件地址)。这个证书会被放置在浏览器中,并在每次连接到服务器时由服务器检查。
[编辑] 当私钥失密时
证书可在其过期前被吊销,通常情况是该证书的私钥已经失密。较新的浏览器如Google Chrome、Firefox[7]、Opera[8]和运行在Windows Vista上的Internet Explorer[9]都实现了在线证书状态协议(OCSP)以排除这种情形:浏览器将网站提供的证书的序列号通过OCSP发送给证书颁发机构,后者会告诉浏览器证书是否还是有效的。[10]
[编辑] 局限
TLS有两种策略:简单策略和交互策略。交互策略更为安全,但需要用户在他们的浏览器中安装個人的证书来进行认证。
不管使用了哪种策略,协议所能提供的保护总强烈地依赖于浏览器的实现和服务器软件所支持的加密算法。
HTTPS并不能防止站点被网络蜘蛛抓取。在某些情形中,被加密资源的URL可仅通过截获请求和响应的大小推得,[11]这就可使攻击者同时知道明文(公开的静态内容)和密文(被加密过的明文),从而使选择密文攻击成为可能。
因为SSL在HTTP之下工作,对上层协议一无所知,所以SSL服务器只能为一个IP地址/端口组合提供一个证书。[12]这就意味着在大部分情况下,使用HTTPS的同时支持基于名字的虚拟主机是不很现实的。一种叫Server Name Indication(SNI)的方案通过在加密连接创建前向服务器发送主机名解决了这一问题。Firefox 2、Opera 8和运行在Windows Vista的Internet Explorer 7都加入了对SNI的支持。[13][14][15]
如果Mac OS X中的家长控制被启用,HTTPS站点必须显式地在“总是允许”列表中列出。[16]
[编辑] 历史
网景在1994年创建了HTTPS,并应用在网景导航者浏览器中。[17] 最初,HTTPS是与SSL一起使用的;在SSL逐渐演变到TLS时,最新的HTTPS也由在2000年五月公布的RFC 2818正式确定下来。[18]
[编辑] 参见
[编辑] 参考资料
- ^ Peter Eckersley: Encrypt the Web with the HTTPS Everywhere Firefox Extension EFF blog, 17 June 2010
- ^ HTTPS Everywhere
- ^ Free SSL Certificates from a Free Certificate Authority. sslshopper.com [2009-10-24].
- ^ Justin Fielding. Secure Outlook Web Access with (free) SSL: Part 1. TechRepublic. 2007-07-16 [2009-10-24].
- ^ SSL Certificate Services. Go Daddy [6 May 2009].
- ^ Secure Site Pro with EV. VeriSign [6 May 2009].
- ^ Mozilla Firefox Privacy Policy. Mozilla Foundation. 27 April 2009 [13 May 2009].
- ^ Opera 8 launched on FTP. Softpedia. 19 April 2005 [13 May 2009].
- ^ Lawrence, Eric. HTTPS Security Improvements in Internet Explorer 7. MSDN. 31 January 2006 [13 May 2009].
- ^ Myers, M; Ankney, R; Malpani, A; Galperin, S; Adams, C. Online Certificate Status Protocol - OCSP. Internet Engineering Task Force [13 May 2009].
- ^ Pusep, Stanislaw. The Pirate Bay un-SSL. 31 July 2008 [6 March 2009].
- ^ Apache FAQ: Why can't I use SSL with name-based/non-IP-based virtual hosts?
- ^ Lawrence, Eric. Upcoming HTTPS Improvements in Internet Explorer 7 Beta 2. Microsoft. 22 October 2005 [12 May 2009].
- ^ Server Name Indication (SNI)
- ^ Pierre, Julien. Browser support for TLS server name indication. Bugzilla (2001-12-19). Mozilla Foundation [2010-12-15].
- ^ Pierre, Julien. Mac OS X v10.5, 10.6: About the Parental Controls Internet content filter. Support (2010-03-30). Apple, Inc. [2010-12-15].
- ^ Walls, Colin. Embedded software. 2005: 344.
- ^ Rescorla, E. HTTP Over TLS. Internet Engineering Task Force [6 May 2009].
[编辑] 外部链接
- (英文)RFC 2818: HTTP Over TLS
- (英文)SSL 3.0 Specification(IETF)
- (英文)HTTPS Everywhere,由电子前哨基金会创建
- 使用HTTPS的维基百科
- (英文)Apache-SSL homepage(已不被活跃开发)
- (英文)Apache 2.2 mod_ssl documentation
- (英文)HTTPS Protocol in Internet Explorer Development - MSDN
- (英文)Manually Configuring Windows Communication Foundation (WCF) when using HTTP and HTTPS - MSDN
- (英文)HTTPS Security Improvements in Internet Explorer 7 & its Compatibility Impact - MSDN
- (英文)EV SSL证书 天威诚信