关系简介
首先我们来看下他们之间的关系。
SSL(Secure Socket Layer)安全套接层是Netscape公司率先采用的网络安全协议。
TLS(Transport Layer Security)传输层安全性协议也是一种网络安全协议,他是基于SSL开发的。可以看作是SSL的升级版。由IETF将SSL标准化后命名为TLS。
openssl是一个是一个开放源代码的软件库包,其主要库是以C语言所写成,他实现了SSL和TLS协议。并提供了其他有关加密证书等工具。
可以简单理解为如图所示:
SSL(Secure Socket Layer)
起源
SSL(Secure Sockets Layer)是网景公司(Netscape)设计的主要用于Web的安全传输协议,这种协议在Web上获得了广泛的应用。在1994年推出首版网页浏览器-网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。
基础算法由作为网景公司的首席科学家塔希尔·盖莫尔(Taher Elgamal)编写,所以他被人称为“SSL之父”。
版本历史
SSL一共有三个版本,目前都已弃用。
协议 | 发布时间 | 状态 |
---|---|---|
SSL 1.0 | 未公布 | 未公布 |
SSL 2.0 | 1995年 | 已于2011年弃用 |
SSL 3.0 | 1996年 | 已于2015年弃用 |
- 1.0版本从未公开过,因为存在严重的安全漏洞。
- 2.0版本在1995年2月发布。2011年,RFC 6176标准弃用了SSL 2.0。
- 3.0版本在1996年发布,是由网景工程师保罗·科切、Phil Karlton和Alan Freier完全重新设计的。2015年,RFC 7568标准弃用了SSL 3.0。
TLS(Transport Layer Security)
起源
IETF将SSL标准化,即 RFC 2246 ,并将其称为TLS(Transport Layer Security)。于1999年发布第一版,名为TLS 1.0。从技术上讲,TLS 1.0与SSL 3.0的差异非常微小。
版本历史
TLS 1.0 | 1999年 | 于2021年弃用 |
TLS 1.1 | 2006年 | 于2021年弃用 |
TLS 1.2 | 2008年 | |
TLS 1.3 | 2018年 |
TLS 1.0
IETF将SSL标准化,即 RFC 2246 ,并将其称为TLS(Transport Layer Security)。
TLS 1.1
TLS 1.1在RFC 4346中定义,于2006年4月发表,它是TLS 1.0的更新。在此版本中的差异包括:
- 添加对CBC攻击的保护:
- 隐式IV被替换成一个显式的IV。(IV 密码学中称为初始向量)
- 更改分组密码模式中的填充错误。
- 支持IANA登记的参数。
微软、Google、苹果、Mozilla四家浏览器业者将在2020年终止支持TLS 1.0及1.1版。2021年3月,RFC 8996标准弃用了TLS 1.0和TLS 1.1。
TLS 1.2
TLS 1.2在RFC 5246 中定义,于2008年8月发表。它基于更早的TLS 1.1规范。主要区别包括:
- 增加SHA-2密码散列函数。
- 增加AEAD加密算法,如GCM模式。
- 添加TLS扩展定义和AES密码组合。所有TLS版本在2011年3月发布的RFC 6176中删除了对SSL的兼容,这样TLS会话将永远无法协商使用的SSL 2.0以避免安全问题。
TLS 1.3
TLS 1.3在RFC 8446中定义,于2018年8月发表。它与TLS 1.2的主要区别包括:
- 将密钥交换算法(如ECDHE)和认证算法(如RSA)从密码包中分离出来。
- 移除MD5、SHA1密码散列函数的支持。
- 请求数字签名。
- 集成HKDF和半短暂DH提议。
- 替换使用PSK和票据的恢复。
- 支持1-RTT握手并初步支持0-RTT。
- 通过在密钥协商期间使用临时密钥来保证完善的前向安全性。
- 放弃许多不安全或过时特性的支持,包括数据压缩、重新协商、非AEAD加密算法、静态RSA和静态DH密钥交换、自定义DHE分组、点格式协商、更改密码本规范的协议、UNIX时间的Hello消息,以及长度字段AD输入到AEAD密码本。
- 较TLS 1.2速度更快,性能更好。
- 移除RC4加密算法的支持。
- 集成会话散列的使用。
- 弃用记录层版本号和冻结数以改进向后兼容性。
- 将一些安全相关的算法细节从附录移动到标准,并将ClientKeyShare降级到附录。
- 支持Ed25519和Ed448数字签名算法。
- 支持X25519密钥交换。
- 支持带Poly1305消息验证码的ChaCha20加密算法。
- 支持加密服务器名称指示(Encrypted Server Name Indication, ESNI)。
openssl
起源
OpenSSL计划在1998年开始,其目标是发明一套自由的加密工具,在互联网上使用。OpenSSL以Eric Young以及Tim Hudson两人开发的SSLeay为基础,随着两人前往RSA公司任职,SSLeay在1998年12月停止开发。因此在1998年12月,社群另外分支出OpenSSL,继续开发下去。
概述
OpenSSL工具包包括:
-
libssl 是 TLSv1.3 (RFC 8446) 之前所有 TLS 协议版本的实现。
-
libCrypto是一个全强度的通用加密库。它构成 在TLS实现的基础上,也可以独立使用。
-
openssl OpenSSL命令行工具,用于加密任务的瑞士军刀, 测试和分析。它可用于
- 创建关键参数
- 创建 X.509 证书、CSR 和 CRL
- 消息摘要的计算
- 加密和解密
- SSL/TLS 客户端和服务器测试
- 处理 S/MIME 签名或加密邮件
- 以及更多...
版本历史
版本 | 初始版本日期 | 备注 | 最近更新版本 |
---|---|---|---|
0.9.1 | 1998年12月23日 |
|
0.9.1c(1998年12月23日) |
0.9.2 | 1999年3月22日 |
|
0.9.2b(1999年4月6日) |
0.9.3 | 1999年5月25日 |
|
0.9.3a(1999年5月27日) |
0.9.4 | 1999年8月9日 |
|
0.9.4(1999年4月9日) |
0.9.5 | 2000年2月28日 |
|
0.9.5a(2000年4月1日) |
0.9.6 | 2000年9月24日 |
|
0.9.6m(2004年3月17日) |
0.9.7 | 2002年12月31日 |
|
0.9.7m(2007年2月23日) |
0.9.8 | 2005年7月5日 |
|
0.9.8zh(2015年12月3日) |
1.0.0 | 2010年3月29日 |
|
1.0.0t(2015年12月3日) |
1.0.1 | 2012年3月14日 |
|
1.0.1u(2016年9月22日) |
1.0.2 | 2015年1月22日 |
|
1.0.2u(2019年12月20日) |
1.1.0 | 2016年8月25日 |
|
1.1.0l(2019年9月10日) |
1.1.1 | 2018年9月11日 |
|
1.1.1p(2022年6月21日) |
3.0.0 | 2021年9月7日 |
|
3.0.4 (2022年6月21日) |
注1:
openssl1.1分支的最新版为1.1.1t,于2023年2月7日发布,为长期支持版本。
openssl3.0分支的最新版本为3.1.0,于2023年3月14日发布,为稳定版本。
注2:
OpenSSL 项目是在 2018 年宣布更改版本号,从 v1.x 版本直接跳到 v3.x 版本,略过 2.x 版本,原因是 OpenSSL FIPS 模块此前已经使用过 2.x 版本号。作为首个大版本号更新,OpenSSL 3.0.0 没有完全向后兼容旧版本,但绝大部分使用 OpenSSL 1.1.1 的应用仍然能正常工作,只需重新编译下。
The Holy Hand Grenade of Antioch - OpenSSL Blog文章来源:https://www.toymoban.com/news/detail-409703.html
openssl/openssl: TLS/SSL and crypto library (github.com)文章来源地址https://www.toymoban.com/news/detail-409703.html
到了这里,关于SSL TLS openssl 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!