SSL TLS openssl 详解

这篇具有很好参考价值的文章主要介绍了SSL TLS openssl 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关系简介

首先我们来看下他们之间的关系。

SSL(Secure Socket Layer)安全套接层是Netscape公司率先采用的网络安全协议。

TLS(Transport Layer Security)传输层安全性协议也是一种网络安全协议,他是基于SSL开发的。可以看作是SSL的升级版。由IETF将SSL标准化后命名为TLS。

openssl是一个是一个开放源代码的软件库包,其主要库是以C语言所写成,他实现了SSL和TLS协议。并提供了其他有关加密证书等工具。

可以简单理解为如图所示:

SSL TLS openssl 详解

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日
  • OpenSSL项目的正式开启
0.9.1c(1998年12月23日)
0.9.2 1999年3月22日
  • 取代0.9.1c
0.9.2b(1999年4月6日)
0.9.3 1999年5月25日
  • 取代0.9.2b
0.9.3a(1999年5月27日)
0.9.4 1999年8月9日
  • 取代0.9.3a
0.9.4(1999年4月9日)
0.9.5 2000年2月28日
  • 取代0.9.4
0.9.5a(2000年4月1日)
0.9.6 2000年9月24日
  • 取代0.9.5a
0.9.6m(2004年3月17日)
0.9.7 2002年12月31日
  • 取代0.9.6m
0.9.7m(2007年2月23日)
0.9.8 2005年7月5日
  • 取代0.9.7m
0.9.8zh(2015年12月3日)
1.0.0 2010年3月29日
  • 取代0.9.8n
1.0.0t(2015年12月3日)
1.0.1 2012年3月14日
  • 取代1.0.0
  • 维护至2016年12月31日
  • 支持RFC 6520 TLS/DTLS心跳
  • 支持SCTP
  • RFC 5705TLS key material exporter
  • RFC 5764 DTLS-SRTP协商
  • Next Protocol Negotiation
  • PSS signatures in certificates, requests and 证书吊销列表
  • Support for password based recipient info for CMS
  • 支持TLS v1.2以及TLS v1.1
  • Preliminary FIPS capability for unvalidated 2.0 FIPS module
  • 支持 安全远程密码协议(SRP)
1.0.1u(2016年9月22日)
1.0.2 2015年1月22日
  • 取代1.0.1
  • 维护至2019年12月31日(长期维护)
  • Suite B支持TLS 1.2和DTLS 1.2
  • 支持 DTLS 1.2
  • TLS自动选择椭圆曲线(EC)
  • 用于设置TLS支持的签名算法和曲线的API
  • SSL_CONF配置API
  • 支持 TLS Brainpool
  • 支持 应用层协议协商
  • CMS支持 RSA-PSS、 RSA-OAEP、ECDH及X9.42 DH
1.0.2u(2019年12月20日)
1.1.0 2016年8月25日
  • 取代1.0.2h
  • 预计维护到2019年9月
  • 支持 BLAKE ( RFC 7693)
  • 支持 ChaCha20-Poly1305( RFC 7539)
  • 支持 X25519( RFC 7748)
  • 支持 DANE和 证书透明度
  • 支持扩 CCM密码包
  • 支持扩展主密钥
  • 移除SSLv2
  • 移除对Kerberos密码包的支持
  • 将RC4和3DES从libssl从DEFAULT密码包中移除
  • 将DSS、SEED、IDEA、CAMELLIA以及AES-CCM从DEFAULT密码包中移除
  • 将40和56位密码从libssl中移除
1.1.0l(2019年9月10日)
1.1.1 2018年9月11日
  • 将持续维护至少五年(预计到2023年9月)
  • 支持 TLS1.3
  • 支持 SHA-3
  • 支持 X448以及 Ed448( RFC 7748)
  • 支持 SipHash
  • 支持 ARIA (cipher)
  • 支持多素数 RSA( RFC 8017)
  • 支持 SM2、 SM3以及 SM4
  • 移除 Heartbleed
  • 移除对QNX支持的支持
1.1.1p(2022年6月21日)
3.0.0 2021年9月7日
  • 重新许可至 Apache License 2.0
  • 重新支持 FIPS 140
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

openssl/openssl: TLS/SSL and crypto library (github.com)文章来源地址https://www.toymoban.com/news/detail-409703.html

到了这里,关于SSL TLS openssl 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Delphi解决 openssl DLL 与 Indy 的SSL/TLS 连接问题

    昨天,突然间,我的一个 Delphi 程序无法连接到互联网上的各种WMS服务器。我收到以下错误消息: 使用 SSL 连接时出错。错误 1409442E:SSL 例程:ssl3_read_bytes:tlsv1 警报协议版本 由于我使用的是最新版本的Indy,根据Delphi Praxis 上的此线程,这种情况不应该发生。事实证明,不知

    2024年02月08日
    浏览(24)
  • 未能为 SSL/TLS 安全通道建立信任关系

    在 Windows早期版本(Windows server 2008)上运行web请求相关代码,提示错误:未能为 SSL/TLS 安全通道建立信任关系。 打开IE直接访问相关网址,按照提示信任网站,安装证书: 选择:将所有证书放入下列存储 选择:受信任的根证书颁发机构。 重新打开浏览器,如果可以正常访问

    2024年02月04日
    浏览(27)
  • HttpClient未能为 SSL/TLS 安全通道建立信任关系,忽略SSL验证

    参考 https://www.cnblogs.com/RaymonGoGo/p/16705733.html

    2024年02月02日
    浏览(24)
  • 根据验证过程,远程证书无效。未能为 SSL/TLS 安全通道建立信任关系。

    提示:这里简述项目相关背景: 例如:项目场景:vs2022,HttpClient调用接口出现错误(根据验证过程,远程证书无效。未能为 SSL/TLS 安全通道建立信任关系。) 缺少证书,需要在安装证书 点击安装证书=》本地计算机=》下列存储,选择受信任的根证书颁发机构,安装完成之后

    2024年02月11日
    浏览(48)
  • 根据验证过程,远程证书无效。未能为 SSL-TLS 安全通道建立信任关系。

    提示:这里简述项目相关背景: 例如:项目场景:vs2022,HttpClient调用接口出现错误(根据验证过程,远程证书无效。未能为 SSL/TLS 安全通道建立信任关系。) 缺少证书,需要在安装证书 点击安装证书=》本地计算机=》下列存储,选择受信任的根证书颁发机构,安装完成之后

    2024年03月22日
    浏览(43)
  • 关于密码学的进一步答疑:SSL和TLS的区别、CA和CT的关系

    《密码学:一文读懂常用加密技术原理及其逻辑与应用方法》一文一经发布后,后台收到了许多私信,承蒙喜爱,这篇文章将主要对后台收到的高频问题予以统一回应。 问题一: 在讨论加密解密的过程中,常常在同一语境下同时出现SSL、TLS,请问两者的差异是什么? 答:在

    2024年02月02日
    浏览(27)
  • C#调用webapi HTTPS报错:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系--安全证书问题

    1、首先加入命名空间: using System.Net.Security; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; SSL网站,连接时需要提供证书,对于非必须提供客户端证书的情况,只要返回一个安全确认即可。我的是.NET FrameWork4.0 2、加入以下代码: 3、接收证书进行身份验

    2024年02月13日
    浏览(33)
  • TLS/SSL 详解

    参考:https://juejin.cn/post/6844903667577929742 参考:https://zhuanlan.zhihu.com/p/594278172 参考:https://www.bilibili.com/video/BV1KY411x7Jp/?spm_id_from=333.788vd_source=cc0e43b449de7e8663ca1f89dd5fea7d 如上图所示,http请求和响应的报文都是明文的,只要有点http基础的人都能看得懂报文里面的内容,所以需要给

    2024年02月04日
    浏览(35)
  • SSL和TLS的区别详解

    SSL和TLS是两种不同的加密协议,用于保护网络通信的安全性。SSL(Secure Sockets Layer)是一种加密协议,用于在客户端和服务器之间建立安全的连接。TLS(Transport Layer Security)是SSL的后继版本,是一种更安全的加密协议,用于保护网络通信的安全性。在本文中,我们将从不同的

    2024年02月11日
    浏览(28)
  • SSL/TLS协议详解以及配置实战

    目录 1、什么是 SSL/TLS协议? 2、SSL协议和TLS协议的关系 3、如何使用SSL/TLS协议? 4、使用 HttpClient 发送一个SSL/TLS连接请求 5、浏览器端如何验证数字证书的合法性? 6、如何在Nginx服务器上配置SSL/TLS协议? 7、如何在 Java Web 项目中使用SSL/TLS协议? 8、如何在 Java SpringBoot 项目中

    2024年02月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包