在HTTP/1.1中升级到TLS

【在HTTP/1.1中升级到TLS】本备忘录的状态
本文档为Internet社区定义Internet标准协议,同时征求改进意见和建议 。关于本
协议的现状和标准化状态请参阅“Internet官方协议标准”(STD1) 。本备忘录的发布不受
任何限制 。
版权声明
Copyright(C)TheInternetSociety(2000).AllRightsReserved.
摘要
本文档描述如何使用HTTP/1.1的升级机制在一个现存的TCP连接上发起安全传输
层(TLS) 。这样就答应安全的和不安全的HTTP通信共享同一个众所周知的端口(在这
个例子中,http在80端口而不是在像https在443端口) 。这种做法也支持“虚拟主
机”,因此一个HTTP TLS服务器能区分发往在同一个IP地址上的几个主机的消息 。
HTTP/1.1[1]中将升级定义为逐跳的机制,本备忘录也描述了用于跨越HTTP代理
建立端到端隧道的HTTPCONNECT机制 。最后,本备忘录为公用HTTP状态码和公用或
私有升级产品符号建立了新的IANA注册 。
本备忘录不影响到当前“https”URI方案的定义,该方案已经定义了一个单独的
名字空间(http://example.org/和https://example.org/不等价) 。

目录
1.动机 2
2.介绍 3
2.1.相关术语 3
3.客户请求升级到TLS之上的HTTP 3
3.1.可选的升级 3
3.2.强制升级 4
3.3服务器对升级请求的确认 4
4服务器请求升级到TLS之上的HTTP 4
4.1选项通知 4
4.1强制通知 4
5通过代理的升级 5
6使用4xx(客户错误)状态码的原理 6
7IANA的考虑 6
7.1HTTP状态码登记 7
安全考虑 7
7.1https:URI方案含义 8
7.2CONNECT的安全考虑 8
参考 8
作者地址 9
附录A 致谢 10
完整版权声明 10
致谢 11
1.动机
过去在SSL3[3]上配置HTTP是用一个唯一的URI及TCP端口号,这样同单独的
HTTP相区分 。方案“http”意味着在80端口单独的HTTP协议,而“https”表示在
443端口的SSL之上的HTTP协议 。类似的,其它应用协议(例如:snews,FTPs)为区
分安全和不安全的使用,要求使用二个端口号 。这个方法使得可用的众所周知的端口
数减半 。
在1997年12月华盛顿特区IETF会议上,应用区主管及IESG重申不赞成使用并行
的“安全”端口号 。HTTP/1.1的升级机制可以在一个打开的HTTP连接上建立传输层安
全[6] 。
自最近两年来,大家已经广泛接受了这个建议,但对实现一个取代通常的用于网
络浏览的443端口没有多大爱好 。实际上,本备忘录不影响当前对https:URI的解
释 。但是,在HTTP之上建立的新的应用协议如Internet打印协议[7],需要这样的机
制使得IETF标准化进程前进一步 。
升级机制也解决了“虚拟主机”问题 。HTTP/1.1服务器不是给一个主机分配多个
IP地址,而是使用主机:头来区分web服务 。由于HTTP/1.1的使用日益流行,越来越
多的ISP提供基于名字的虚拟主机,使得IP地址空间不会马上耗尽 。
TLS(及SSL)和HTTP的早期版本一样受制于:初始化的握手不指定需要的主机
名,而只依靠于IP地址 。使用明文的HTTP/1.1升级:作为TLS握手的序幕,――基于
初始的主机:头选择证书,――可使得ISP同样能提供基于名字的安全虚拟主机 。
2.介绍
TLS又名SSL(安全套接字层),建立一个私有端到端连接,选项包括使用多种密码系
统的相互之间的强认证 。开始时,一次握手过程使用三个子协议来设置一个记录层,认证
端点,设置参数,和报告错误 。然后,由一个分层记录协议处理加密,压缩和重组连接的

推荐阅读