首页 存档 技术 查看内容

https上线一周年总结-初步了解、协商与数据传输

2018-3-30 13:00 |来自: 互联网 262 0

摘要: 架构师(JiaGouX)我们都是架构师! 已经很长时间没有写博客了,昨天刚在公司内部分享了网站https上线一周年的各种事情,有一些觉得比较好的东西,分享出来。 为什么要使用https 明文传输的http,存在被内网嗅探 ...

架构师(JiaGouX)
我们都是架构师!


已经很长时间没有写博客了,昨天刚在公司内部分享了网站https上线一周年的各种事情,有一些觉得比较好的东西,分享出来。

为什么要使用https

明文传输的http,存在被内网嗅探以及内容被劫持的危险,无论是用户还是网站管理者都不愿意看到这种情况发生。


  1. 窃取用户隐私。用户提交密码的时候,可以被嗅探或者被路由器被攻破,拦截数据,从而密码泄露。另外一些网页传输一些明文的资料,也可能被泄露。

  2. 跟踪用户行为。用户上网的时候,服务器返回的html当中,插入一段JS,用户都做了什么,浏览了什么页面,都可以被人得知。你搜索了一个东西,也许很快就有人给你打电话联系你 。

  3. 网页挂马。很简单,利用浏览器漏洞,可以自动下载木马并且运行。

  4. 广告联盟。页面插入广告,引导或者误导用户点击,用户以为是网站添加的,网站管理者躺着中枪。另外用户输入一个地址的时候,先跳转到广告联盟,然后跳转回来,相当于是广告联盟引流过去,这样网站管理者就得多付钱,用户体验也降低了。

  5. 账户安全。不安全的http,下面不敢输入密码呀。

还有一些的危险方面,不一一列举。

一种安全的解决方案-https


  1. 具有身份认证

  2. 保证数据完整性

  3. 数据加密,即使数据泄露,也无法破解。

  4. 效率,可以被容忍

  5. 现在的客户端以及服务端基本上都可以支持

  6. 可以使用现在主流的加密算法

多了中间层 SSL/TLS

尼古拉斯赵四曾说过,在东北没有什么事儿是一顿烧烤解决不了的。同样在软件行业,有类似的这么一句话。计算机的任何问题都可以通过增加一个虚拟层来解决



SSL网景公司发明,后来被IETF改名为TLS。现在常见的版本,有SSL 3.0,TLS 1.0 ,TLS 1.1, TLS 1.2四个版本。但是SSL3.0 TLS1.0有很大的安全漏洞,最好不要使用了。

版本支持情况

服务器端,随时可以更新版本支持最新的版本,也可以配置支持哪些版本。

浏览器端,一般是发布的时候,支持当时主流的版本。后期的版本,就支持不了。维基百科,有相关的浏览器的支持情况。

如果服务端最低版本支持TLS1.0,而IE6 默认支持版本SSL 3.0,怎么办?用户无法访问了呗。

SSL/TLS都做了什么事情

  1. 版本协商,客户端以及服务端都支持的最高版本。

  2. 加密算法协商,包括对称加密算法,以及非对称加密算法等。

  3. 压缩算法协商。

  4. 密钥协商,商定传输数据时需要的对称加密的key。

  5. 数据传输的加解密。

他们是如何完成协商的

https是基于TCP握手之后,然后开始SSL握手的。平常一些文章说HTTPS是4次握手,其实是7次握手。


首先是客户端发送client Hello ,然后服务端发送Server Hello,就完成了大部分的协商,只剩下密钥协商。这两个Hello不是一般的Hello

struct {

ProtocolVersion client_version; //支持的最高的版本号

Random random; //随机数,参数密钥的计算

SessionID session_id; // session id

CipherSuite cipher_suites

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部