Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


大型网站的 HTTPS 实践(一): HTTPS 协议和原理

2015-5-5 22:13    评论: 8 收藏: 6    

1 前言

百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS。本文重点介绍 HTTPS 协议, 并简单介绍部署全站 HTTPS 的意义。

2 HTTPS 协议概述

HTTPS 可以认为是 HTTP + TLS。HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的。

TLS 是传输层加密协议,它的前身是 SSL 协议,最早由 netscape 公司于 1995 年发布,1999 年经过 IETF 讨论和规范后,改名为 TLS。如果没有特别说明,SSL 和 TLS 说的都是同一个协议。

HTTP 和 TLS 在协议层的位置以及 TLS 协议的组成如下图:

pic1

图 1 TLS 协议格式

TLS 协议主要有五部分:应用数据层协议,握手协议,报警协议,加密消息确认协议,心跳协议。

TLS 协议本身又是由 record 协议传输的,record 协议的格式如上图最右所示。

目前常用的 HTTP 协议是 HTTP1.1,常用的 TLS 协议版本有如下几个:TLS1.2, TLS1.1, TLS1.0 和 SSL3.0。其中 SSL3.0 由于 POODLE 攻击已经被证明不安全,但统计发现依然有不到 1% 的浏览器使用 SSL3.0。TLS1.0 也存在部分安全漏洞,比如 RC4 和 BEAST 攻击。

TLS1.2 和 TLS1.1 暂时没有已知的安全漏洞,比较安全,同时有大量扩展提升速度和性能,推荐大家使用。

需要关注一点的就是 TLS1.3 将会是 TLS 协议一个非常重大的改革。不管是安全性还是用户访问速度都会有质的提升。不过目前没有明确的发布时间。

同时 HTTP2 也已经正式定稿,这个由 SPDY 协议演化而来的协议相比 HTTP1.1 又是一个非常重大的变动,能够明显提升应用层数据的传输效率。

3 HTTPS 功能介绍

百度使用 HTTPS 协议主要是为了保护用户隐私,防止流量劫持。

HTTP 本身是明文传输的,没有经过任何安全处理。例如用户在百度搜索了一个关键字,比如“苹果手机”,中间者完全能够查看到这个信息,并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时,发现首页或者结果页面浮了一个很长很大的广告,这也肯定是中间者往页面插的广告内容。如果劫持技术比较低劣的话,用户甚至无法访问百度。

这里提到的中间者主要指一些网络节点,是用户数据在浏览器和百度服务器中间传输必须要经过的节点。比如 WIFI 热点,路由器,防火墙,反向代理,缓存服务器等。

在 HTTP 协议下,中间者可以随意嗅探用户搜索内容,窃取隐私甚至篡改网页。不过 HTTPS 是这些劫持行为的克星,能够完全有效地防御。

总体来说,HTTPS 协议提供了三个强大的功能来对抗上述的劫持行为:

1,  内容加密。浏览器到百度服务器的内容都是以加密形式传输,中间者无法直接查看原始内容。

2,  身份认证。保证用户访问的是百度服务,即使被 DNS 劫持到了第三方站点,也会提醒用户没有访问百度服务,有可能被劫持

3,  数据完整性。防止内容被第三方冒充或者篡改。

那 HTTPS 是如何做到上述三点的呢?下面从原理角度介绍一下。 

123下一页
查看其它分页:

发表评论


最新评论

我也要发表评论

linux 2015-5-7 22:59
[点击展开更多楼层]
3
FoamValue 发表于 2015-5-7 08:48 的评论:
似乎公司屏蔽了某些url 导致页面丢失了很多资源 无法加载
4
linux 发表于 2015-5-7 09:11 的评论:
唉。你可以看看浏览器的调试器(开发者工具),会提示那个资源不能加载,看看是你公司拦截了,还是浏览器拦截了,抑或是 dns 解析的问题?
5
FoamValue 发表于 2015-5-7 15:55 的评论:
确实拦截了  *.qbox.me  下的资源全部没有加载。唉,各种方法后能正常访问了。就是加载慢了些。
HTTPS 在整个会话中第一次稍微慢点,之后应该就没感觉了。
7 回复
FoamValue 2015-5-7 15:55
[点击展开更多楼层]
2
linux 发表于 2015-5-6 12:14 的评论:
都有啊?
3
FoamValue 发表于 2015-5-7 08:48 的评论:
似乎公司屏蔽了某些url 导致页面丢失了很多资源 无法加载
4
linux 发表于 2015-5-7 09:11 的评论:
唉。你可以看看浏览器的调试器(开发者工具),会提示那个资源不能加载,看看是你公司拦截了,还是浏览器拦截了,抑或是 dns 解析的问题?
确实拦截了  *.qbox.me  下的资源全部没有加载。唉,各种方法后能正常访问了。就是加载慢了些。
回复
linux 2015-5-7 09:11
1
FoamValue 发表于 2015-5-6 08:32 的评论:
为什么图片看不到??
2
linux 发表于 2015-5-6 12:14 的评论:
都有啊?
3
FoamValue 发表于 2015-5-7 08:48 的评论:
似乎公司屏蔽了某些url 导致页面丢失了很多资源 无法加载
唉。你可以看看浏览器的调试器(开发者工具),会提示那个资源不能加载,看看是你公司拦截了,还是浏览器拦截了,抑或是 dns 解析的问题?
回复
FoamValue 2015-5-7 08:48
1
FoamValue 发表于 2015-5-6 08:32 的评论:
为什么图片看不到??
2
linux 发表于 2015-5-6 12:14 的评论:
都有啊?
似乎公司屏蔽了某些url 导致页面丢失了很多资源 无法加载
回复
FoamValue 2015-5-6 20:35
1
FoamValue 发表于 2015-5-6 08:32 的评论:
为什么图片看不到??
2
linux 发表于 2015-5-6 12:14 的评论:
都有啊?
额... 在公司看的时候,都没加载出来。现在都有了。
4 回复
linux 2015-5-6 12:14
1
FoamValue 发表于 2015-5-6 08:32 的评论:
为什么图片看不到??
都有啊?
1 回复
KSwyangsun 2015-5-6 10:03
百度新闻啊,贴吧啊,还不是https呀
回复
FoamValue 2015-5-6 08:32
为什么图片看不到??
9 回复

热点评论

FoamValue 2015-5-6 08:32
为什么图片看不到??
9
linux 2015-5-7 22:59
HTTPS 在整个会话中第一次稍微慢点,之后应该就没感觉了。
7
FoamValue 2015-5-6 20:35
额... 在公司看的时候,都没加载出来。现在都有了。
4
linux 2015-5-6 12:14
都有啊?
1
返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。