4月阅读周·HTTP权威指南:安全HTTP之通过代理以隧道形式传输安全流量篇
【摘要】 引言HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不...
引言
HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。
《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。
这本书主要包括以下内容:
- 第一部分描述了Web的基础构件与HTTP的核心技术
- 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
- 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
- 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
- 第五部分介绍了发布和传播Web内容的技巧。
- 第六部分是一些很有用的参考附录,以及相关技术的教程。
安全HTTP
在友好环境中,这些技术都能够很好地工作,但在充满各种利益驱动和恶意对手的环境中,它们并不足以保护那些重要的事务处理。
接下来讨论一种更复杂,更安全的技术,通过数字密码来保护HTTP事务免受窃听和篡改的侵害。
通过代理以隧道形式传输安全流量
客户端通常会用Web代理服务器代表它们来访问Web服务器。比如,很多公司都会在公司网络和公共因特网的安全边界上放置一个代理。代理是防火墙路由器唯一允许进行HTTP流量交换的设备,它可能会进行病毒检测或其他的内容控制工作。
但只要客户端开始用服务器的公开密钥对发往服务器的数据进行加密,代理就再也不能读取HTTP首部了!代理不能读取HTTP首部,就无法知道应该将请求转向何处了。
HTTP通过新的名为CONNECT的扩展方法来发送明文形式的端点信息。CONNECT方法会告诉代理,打开一条到所期望主机和端口号的连接。这项工作完成之后,直接在客户端和服务器之间以隧道形式传输数据。CONNECT方法就是一条单行的文本命令,它提供了由冒号分隔的安全原始服务器的主机名和端口号。host:port后面跟着一个空格和HTTP版本字符串,再后面是CRLF。接下来是零个或多个HTTP请求首部行,后面跟着一个空行。空行之后,如果建立连接的握手过程成功完成,就可以开始传输SSL数据了。下面是一个例子:
CONNECT home.netscape.com:443 HTTP/1.0
User-agent: Mozilla/1.1N
<raw SSL-encrypted data would follow here...>
在请求中的空行之后,客户端会等待来自代理的响应。代理会对请求进行评估,确保它是有效的,而且用户有权请求这样一条连接。如果一切正常,代理会建立一条到目标服务器的连接。如果成功,就向客户端发送一条200 Connection Established响应。
HTTP/1.0200 Connection established
Proxy-agent: Netscape-Proxy/1.1
更多信息
HTTP安全性
RFC 2817, “Upgrading to TLS Within HTTP/1.1”(“在HTTP/1.1中升级到TLS”),说明了如何使用HTTP/1.1中的升级机制在现存的TCP连接上启动TLS。这样非安全和安全HTTP流量就可以共享相同的知名端口了(在这种情况下,使用的是http:的80端口,而不是https:的443端口)。还可以使用虚拟主机技术。这样,使用一台HTTP+TLS服务器就可以区分出发往同一个IP地址上不同主机名的流量了。
SSL与TLS
RFC 2246, “The TLS Protocol Version 1.0”(“TLS协议版本1.0”),对(SSL的后继协议)TLS协议的版本1.0进行了规范。TLS提供了因特网上通信的私密性。协议允许客户端/服务器应用程序以防止窃听、篡改以及伪造报文的方式进行通信。
OpenSSL项目是一个合作开发项目,目的是开发一个强壮的、全功能的、商业级开源工具集,以实现安全套接字层(SSL v2/v3)和传输层安全(TLS v1)协议以及强大的通用密码库。这个项目由全世界范围内的志愿者社区管理,那些志愿者通过因特网进行交流、制定计划、开发OpenSSL工具集并撰写相关文档。OpenSSL基于Eric A. Young和Tim J. Hudson开发的优秀SSLeay库。OpenSSL工具集有一个Apache风格的许可证,这基本上就意味着只要遵循一些基本的许可条件,就可免费获得并将其用于商业或非商业目的。
公开密钥基础设施
RFC 2459, “Internet X.509 Public Key Infrastructure Certificate and CRL Profile”(“因特网X.509公开密钥基础设施证书及CRL概述”),详细介绍了X.509 v3数字证书。
总结
为了使HTTPS与代理配合工作,要进行几处修改以告知代理连接到何处。一种常用的技术就是HTTPS SSL隧道协议。使用HTTPS隧道协议,客户端首先要告知代理,它想要连接的安全主机和端口。这是在开始加密之前,以明文形式告知的,所以代理可以理解这条信息。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)