OpenSSL支持TLS1.3特性前瞻

本文由Matt Caswell于2015年5月4日发布在OpenSSL博客。

即将到来的OpenSSL 1.1.1版本将支持TLS 1.3。这个新版本将兼容OpenSSL 1.1.0版本的二进制文件和API。理论上,如果你的应用程序支持OpenSSL 1.1.0,那么当更新可用时,TLS 1.3版本也将自动得到支持,你不需要专门进行安装。但有一些问题仍需要应用程序开发人员和部署人员了解。在这篇博客中,我将谈谈其中的一些问题。

与TLS 1.2及更早版本的区别

TLS 1.3版本是对规范的重大修改。它到底应该叫TLS 2.0还是现在的名字TLS 1.3,还存在一些争论。该版本有重大变化,一些工作方式也非常不同。下面是你可能需要注意的一些问题,简明扼要,不过并不太全面。

  • 有一些新的密码套件仅在TLS 1.3下工作。一些旧的密码套件无法用于TLS 1.3连接。
  • 新的密码套件定义方式不同,且并未详细规定证书类型(如RSA、DSA、ECDSA)或密钥交换机制(如DHE或ECHDE)。这对密码套件的配置有暗示作用。
  • 客户端在客户问候消息(ClientHello)中提供一个“key_share”。这会对“组”配置产生影响。
  • 直到主握手完成以后,会话才会建立。在握手结束和会话建立之间可能会有一个间隙(理论上,会话可能根本不会建立),并可能对会话恢复代码产生影响。
  • 在TLS 1.3版本中,重新磋商是不可能的。
  • 现在大部分握手都会被加密。
  • 更多类型的消息现在可以有扩展(这对定制扩展API和证书透明系统有影响)。
  • 在TLS 1.3连接中不再允许使用DSA证书。

注意,在这一阶段,只支持TLS 1.3。因DTLS 1.3版本的规范刚刚开始制定,目前并不支持OpenSSL。

TLS 1.3标准目前的状态

到我写这篇文章时,TLS 1.3仍是一个草案。TLS工作团队定期会发布该标准的新版草案。实际中,需要对草案进行部署来识别他们使用的具体版本,基于不同草案版本的实现之间无法交互。

OpenSSL 1.1.1至少不会在TLS 1.3发布之前完成。同时,OpenSSL的git主分支包含了我们的TLS 1.3开发代码,可以用于测试(即不用于生产)。你可以在任意OpenSSL版本中通过头文件tls1.h中的宏TLS1_3_VERSION_DRAFT_TXT的值来查看部署的TLS 1.3草案的版本。在该标准的最终版发布后,这个宏会被删除。

你必须使用“enable-tls1_3”选项来“配置”(config或Configure),以编译OpenSSL,使其支持TLS 1.3。

目前,OpenSSL已执行了TLS 1.3的“20版草案”。而很多其他库仍在使用旧版草案。相当多的主流浏览器在使用“18版草案”。这是交互性问题产生的共同来源。18版草案的交互性已被BoringSSL、NSS和picotls测试过。

在OpenSSL的hit源码库中有两个分支:“tls1.3-draft-18”和“tls1.3-draft-19”,都执行旧的TLS 1.3草案版本。为测试其它TLS 1.3版本环境下的交互性,你可能需要使用其中一个分支。注意那些分支被认为是临时的,而且当将来不再需要它们时,可能会被删除。

密码套件

OpenSSL已支持以下5种TLS 1.3的密码套件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值