近期又碰到了SSL相关的事情, 就心血来潮开个新专题 - 《HTTPS基础原理和配置》

本文是第一篇文章, 主要介绍SSL TLS加密协议的相关内容。

加密协议历史概要

SSL TLS加密协议其实并没有很长的历史,1995年网景发布了SSL v2.0,这也是web加密的开始。这使得电子商务领域,人们可以在线提交密码和信用卡,并且至少是相当安全的。

SSLv3.0很快发布,这版被保罗·柯克(Paul Coker)及其他人完全重写。这是一个非常坚实的协议。事实上,IETF采用SSL v3.0,并使它成为并不是网景独有的协议,叫做TLS(Transport Layer Security)。SSL意思是安全套接字层,但现在叫传输层安全。

所以,TLS v1.0几乎和SSL v3.0 一模一样,只是进行了一两个小优化,并且IAF使之标准化。如果你深究这些协议,TLS v1.0实际上就是SSL v3.1;所以你可以认为他们是连续的。

但是最终IETF提出了新版本v1.1(一些小优化),然后是v1.2,引入了一些新的加密算法。但是看到这你可能会想“好吧,有些客户端支持这些,有些客户端支持更新的,这取决于它们发布的时间. 安全性上可能差不太多". 但实际在安全意义上,这些中的大多数已经以被破解了。

关键历史节点

  • SSL v2.0 1995年 网景 发布
  • SSL v3.0 1996年发布 修复v2的主要问题
  • TLS v1.0 1999年 IETF发布;对SSLv3小优化
  • TLS v1.1 2006年 发布 小优化
  • TLS v1.2 2008年发布 改进hash和AEAD模式

被破解历史概要

首先是SSL v2.0, 设计之初就被破解, 所以,ssl v2.0确实不推荐使用;已经被破解很长很长时间了,不安全。 我们经常听到的支持的SSL版本一般也是从SSL v3.0开始的.

SSL v3.0呢, 之前一直在用,直到2014年11月被破解。

TLS

v1.0和v1.1基本安全。

最新的v1.2(其实现在已经不算最新的了, TLS v1.3已经出来了, 但是目前主流的最新协议还是1.2), 是唯一一个还没有针对性攻击的版本(PS: 当然, 近期也有针对TLS v1.2的漏洞爆出, 但还算OK)。

TLS有一个混乱的历史,并没有真正最好的安全记录,但TLS v1.2一直还是最好的,当涉及到与浏览器和服务的交互,它内置在几乎一切的浏览器和服务器中(最新的)。

所以,TLS

v1.2是大势所趋, 如果涉及到关键业务数据交互, 如用户关键信息 支付 金融等场景, TLS v1.2才能真正有保障, 而其他老的加密协议, 都已经被破解了, 黑客想拿到你的数据(如果你用老的加密协议)只是时间问题, 并不存在技术上的难点。所以评估ATS(苹果的安全相关要求)合规也要求该版本。

被破解关键历史节点

  • SSL v2.0 1995发布 - 设计之初被破解
  • SSL v3.0 1996发布 – 被POODLE破解(2014 .11)
  • TSL v1.0 1999发布 – BEAST(2011)和Lucky 13(2013)发现漏洞
  • T​LS v1.1 2006发布 – 被Lucky 13(2013)和RC4(2013,2015)发现漏洞
  • TLS v1.2 2008发布 – 只有在AEAD模式下是安全的

客户端兼容性

注意:

如果有条件, 强烈建议只选择 TLS v1.2版本. (对于传统企业, 真的挺难做到的)​

根据以上的内容来看, 那我只选择TLS v1.2协议好了, 但实际情况是, TLS v1.2 是2008年才发布的(标注发布), 而真正要落到实处所需要的时间更长. 所以很多客户端并不支持TLS v1.2.

这些客户端, 是广义的客户端, 包括:

  • 操作系统
  • 浏览器
  • 手机
  • 胖客户端(如Java客户端)
  • ...

所以,如果你计划服务器只选择1.2版本,你就可能失去了很多潜在客户(还在用旧的客户端的客户, 当然, 说不定用着旧电脑的员工也被拒之门外了...)。这并不是最好的举动,除非对绝对安全非常敏感。否则的话, 还是建议支持更多的安全协议让更多的客户可以兼容. 是吧? 毕竟比起http这种裸奔, 其他旧的协议好歹还是穿着衣服的.

但是, 另一些大平台, 已经开始倾向于v1.2。比如ios之前的ATS合规要求, 比如微软建议你放弃TLS v1.0和 TLS v1.1的支持。因此,行业正在朝着标准迈进。

支持TLS v1.2客户端列表

  • Windows 8 以上 (Windows Server 2008以上 - 2017年下半年才支持) ( win7不支持! 更别提win xp了)
  • RHEL 或 CentOS ≥ 6.5 ( 用CentOS 5.X的注意了啊, 不支持TLS v1.2 ​)
  • Chrome ≥ 30
  • 安卓 ≥ 5.0
  • 火狐浏览器 ≥ 27
  • IE/Edge ≥ 11 (主流的IE8 9 10都不支持!)
  • iOS ≥ 5
    • 注意:iOS 9应用需要TLS 1.2支持。(ATS合规要求, 当时后来好像很难推下去)

支持TLS 1.0 客户端列表

TLS 1.0 (真正安全的最老版本)几乎都支持(除了win xp sp2)。

配置建议

再次推荐SSL Labs, 打分如下:

高安全性 低兼容性

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

只支持TLS v1.2. 当你配置加密协议时,如果只选择TLS

1.2,得分会是A

中安全性 高兼容性

SSLProtocol all -SSLv3

只支持TLS协议, 得分也会是A. (之前的, 近期不确定, 感兴趣的可以测一下).

低安全性 最大兼容性

SSLProtocol all

如果使用SSLv3.0,有风险,得C。

总结

选择加密协议, 要根据具体的需求, 有侧重, 也要做到安全性和兼容性的兼顾.

我之前有个相关的PPT, 感兴趣的话后续发上来.

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

HTTPS基础原理和配置 - 1的更多相关文章

  1. Nginx详解二十:Nginx深度学习篇之HTTPS的原理和作用、配置及优化

    一.HTTPS原理和作用: 1.为什么需要HTTPS?原因:HTTP不安全1.传输数据被中间人盗用.信息泄露2.数据内容劫持.篡改 2.HTTPS协议的实现对传输内容进行加密以及身份验证 对称加密:加 ...

  2. HTTPS 原理及配置

    目录 一.HTTPS 身份验证介绍 二.windows 环境下配置 tomcat HTTPS 三.linux 环境下配置 tomcat HTTPS 一.HTTPS 身份验证介绍 1. HTTPS 原理 ...

  3. HTTPS工作原理

    HTTPS是什么 HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,及以安全为目标的HTTP通道,简单说就是HTTP的安全版本. ...

  4. OpenStack的基础原理

    OpenStack的基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其 ...

  5. Macaca 基础原理浅析

    导语 前面几篇文章介绍了在Macaca实践中的一些实用技巧与解决方案,今天简单分析一下Macaca的基础原理.这篇文章将以前面所分享的UI自动化Macaca-Java版实践心得中的demo为基础,进行 ...

  6. Hadoop基础原理

    Hadoop基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 业内有这么一句话说:云计算可能改变了整个传统IT产业的基础架构,而大数据处理,尤其像Hadoop组件这样的技术出 ...

  7. APPcrawler基础原理解析及使用

    一.背景 一年前,我们一直在用monkey进行Android 的稳定性测试 ,主要目的就是为了测试app 是否会产生Crash,是否会有ANR,页面错误等问题,在monkey测试过程中,实现了脱离Ca ...

  8. Https通信原理及Android中实用总结

    一.背景 Http俨然已经成为互联网上最广泛使用的应用层协议,随着应用形态的不断演进,传统的Http在安全性上开始面临挑战,Http主要安全问题体现在: 1,信息内容透明传输. 2,通信对方的身份不可 ...

  9. [转帖]keepalived工作原理和配置、使用

    keepalived工作原理和配置.使用 https://www.iteye.com/blog/aoyouzi-2288124 keepalived是什么 keepalived是集群管理中保证集群高可 ...

  10. 【一起学源码-微服务】Hystrix 源码一:Hystrix基础原理与Demo搭建

    说明 原创不易,如若转载 请标明来源! 欢迎关注本人微信公众号:壹枝花算不算浪漫 更多内容也可查看本人博客:一枝花算不算浪漫 前言 前情回顾 上一个系列文章讲解了Feign的源码,主要是Feign动态 ...

随机推荐

  1. Kubeadm搭建kubernetes集群

    Kubeadm搭建kubernetes集群 环境说明 | 角色 | ip | 操作系统 |组件 | | – | – | – | | master | 192.168.203.100 |centos8 ...

  2. win10+vs2019 编译webrtc m108

    不能访问外网途径的捷径 已经下载好的资源,可以直接生成工程: https://pan.baidu.com/s/14plvXZD_qX9nn441RbsCwA?pwd=ww8c 该资源可以跳过的步骤 步 ...

  3. npm安装hexo报错

    报错提示 npm WARN saveError ENOENT: no such file or directory, open '/home/linux1/package.json' npm noti ...

  4. Redis系列11:内存淘汰策略

    Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...

  5. 关于linux上mysql导出excel 文件

    这里简单介绍两种方法导出 1.在mysql交互中 首先查看"secure_file_priv"变量 SHOW VARIABLES LIKE "secure_file_pr ...

  6. ArcObjects SDK开发 006 ICommand和ITool接口

    1.ICommand接口 ICommand接口是插件协议之一,继承该接口的类都可以成为命令.即点击一下执行,不主动与宿主发生鼠标和键盘交互.该接口包含的重要成员如下表所示. 序号 名称 类型 描述 1 ...

  7. 【大数据面试】Flink 01 概述:包含内容、层次架构、运行组件、部署模式、任务提交流程、任务调度概念、编程模型组成

    一.概述 1.介绍 对无界和有界数据流进行有状态计算的分布式引擎和框架,并可以使用高层API编写分布式任务,主要包括: DataSet API(批处理):静态数据抽象为分布式数据集,方便使用操作符进行 ...

  8. SQL语句查询关键字 多表查询

    目录 SQL语句查询关键字 select from 编写顺序和查询数据 前期数据准备 编写SQL语句的小技巧 查询关键字之筛选 where 逻辑运算符 not and or between not b ...

  9. 《HTTP权威指南》– 7.缓存

    Web缓存的概念 Web缓存是可以自动保存常见文档副本的HTTP设备. 使用缓存的优点: 减少了数据的数据传输,节省了网络费用: 缓解了网络瓶颈的问题,不需要更多的带宽就能更快地加载页面: 降低了原始 ...

  10. 时间片差分调度法-充分利用MCU的资源

    前言 通过该篇学习了嵌入式的任务调度(即时间片论法)后,了解到通过以1ms为调度时间单位轮询判断是否需要执行函数任务,那么下面介绍如何基于时间片论法的任务调度模式充分利用MCU的资源,姑且先称这种方式 ...