HTTPS基础原理和配置 - 1
近期又碰到了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)发现漏洞
- TLS 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的更多相关文章
- Nginx详解二十:Nginx深度学习篇之HTTPS的原理和作用、配置及优化
一.HTTPS原理和作用: 1.为什么需要HTTPS?原因:HTTP不安全1.传输数据被中间人盗用.信息泄露2.数据内容劫持.篡改 2.HTTPS协议的实现对传输内容进行加密以及身份验证 对称加密:加 ...
- HTTPS 原理及配置
目录 一.HTTPS 身份验证介绍 二.windows 环境下配置 tomcat HTTPS 三.linux 环境下配置 tomcat HTTPS 一.HTTPS 身份验证介绍 1. HTTPS 原理 ...
- HTTPS工作原理
HTTPS是什么 HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,及以安全为目标的HTTP通道,简单说就是HTTP的安全版本. ...
- OpenStack的基础原理
OpenStack的基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其 ...
- Macaca 基础原理浅析
导语 前面几篇文章介绍了在Macaca实践中的一些实用技巧与解决方案,今天简单分析一下Macaca的基础原理.这篇文章将以前面所分享的UI自动化Macaca-Java版实践心得中的demo为基础,进行 ...
- Hadoop基础原理
Hadoop基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 业内有这么一句话说:云计算可能改变了整个传统IT产业的基础架构,而大数据处理,尤其像Hadoop组件这样的技术出 ...
- APPcrawler基础原理解析及使用
一.背景 一年前,我们一直在用monkey进行Android 的稳定性测试 ,主要目的就是为了测试app 是否会产生Crash,是否会有ANR,页面错误等问题,在monkey测试过程中,实现了脱离Ca ...
- Https通信原理及Android中实用总结
一.背景 Http俨然已经成为互联网上最广泛使用的应用层协议,随着应用形态的不断演进,传统的Http在安全性上开始面临挑战,Http主要安全问题体现在: 1,信息内容透明传输. 2,通信对方的身份不可 ...
- [转帖]keepalived工作原理和配置、使用
keepalived工作原理和配置.使用 https://www.iteye.com/blog/aoyouzi-2288124 keepalived是什么 keepalived是集群管理中保证集群高可 ...
- 【一起学源码-微服务】Hystrix 源码一:Hystrix基础原理与Demo搭建
说明 原创不易,如若转载 请标明来源! 欢迎关注本人微信公众号:壹枝花算不算浪漫 更多内容也可查看本人博客:一枝花算不算浪漫 前言 前情回顾 上一个系列文章讲解了Feign的源码,主要是Feign动态 ...
随机推荐
- Perl printf 函数
转载 Perl printf 函数
- PGL图学习之图神经网络GNN模型GCN、GAT[系列六]
PGL图学习之图神经网络GNN模型GCN.GAT[系列六] 项目链接:一键fork直接跑程序 https://aistudio.baidu.com/aistudio/projectdetail/505 ...
- 6个tips缓解第三方访问风险
随着开发和交付的压力越来越大,许多企业选择依赖第三方来帮助运营和发展业务.值得重视的是,第三方软件及服务供应商和合作伙伴也是云环境攻击面的重要组成部分.尽管企业无法完全切断与第三方的关联,但可以在向他 ...
- 你认识的C# foreach语法糖,真的是全部吗?
本文的知识点其实由golang知名的for循环陷阱发散而来, 对应到我的主力语言C#, 其实牵涉到闭包.foreach.为了便于理解,我重新组织了语言,以倒叙结构行文. 先给大家提炼出一个C#题:观察 ...
- python基础语法/简单数据类型/常量与变量
今日内容概要 PEP-8规范/python基础语法 变量与常量定义 基本数据类型(整形int,字符串str,浮点型float,字典dict,列表list) 到此我们前期的配置已经可以满足我们正常编写代 ...
- C温故补缺(六):C反汇编常用的AT&Tx86语法
C语言反汇编用到的AT&T x86汇编语法 参考:CSDN1,CSDN2 默认gcc -S汇编出的,以及反汇编出的,都是AT&T x86代码,可以用-masm=intel指定为inte ...
- 基于LSM树的存储机制简述
下午听了关于MyRocks-PASV的研究讲座,很有意思所以学习了一下LSM树的一些简单的底层原理.现在整理一下 我们都知道目前Key:Value型的数据库普遍较之关系型数据库有着更好的表现,为什么会 ...
- [CG] 用 Docker 配置 Ubuntu OpenGL 环境
成功在 MacOS 的 Docker 中运行 OpenGL 程序并显示这里记录一下: 我用的是 https://hub.docker.com/r/thewtex/opengl 这个镜像非常好,大部分工 ...
- JavaEE Day05 JDBC(用Java语言操作数据库)
今日内容 基本概念 快速入门 对JDBC中各个接口和类的详解 一.基本概念 1.概念:Java Database Connectivity:Java数据库连接,Java语言操作数据库 2.本质:官方( ...
- [opencv]一些重配遇到的问题(只针对我自己的电脑)
1.我的opencv版本是4.5.3 2.环境变量这样配 3.对于每个项目,项目属性这样配: 其中包含目录: C:\Users\dxd\OPCV\opencv\build\include\opencv ...
