TLS:总结下ClientHello和ServerHello中的扩展项

本文详细介绍了TLS协议中的扩展项,包括SNI服务器名称指示、Max Fragment Length分块最大数量、Status Request证书状态请求、Signature Algorithm签名和摘要算法以及ALPN应用层协议协商扩展。SNI扩展解决了服务器虚拟主机问题,Max Fragment Length用于协商分块大小,Status Request用于证书吊销状态查询,Signature Algorithm涉及签名和摘要算法,而ALPN则用于协商应用层协议,如HTTP/2.0。
摘要由CSDN通过智能技术生成

目录

TLS/SSL协议扩展

SNI服务器名称指示

Max Fragment Length分块最大数量

Status Request证书状态请求

Signature Algorithm签名和摘要算法

ALPN应用层协议协商扩展


以前的我一直很少在意扩展项这部分(除了证书扩展外),但是后来接触的TLS/SSL协议越多,发现扩展项很多地方都出现,而且挺重要的,如证书链结构里的CRL分发点,用来标识一个URL地址,提供下载证书吊销列表来做证书吊销校验。在CRL结构中也有扩展项,如CRL Number扩展,颁发机构标识符扩展等。同样是提供证书吊销状态校验的OCSP服务也是提供有可选的扩展项,例如Nonce随机数扩展,发送OCSP校验的一方在请求中放置一个随机数,来标识每一次请求都是唯一的。在LTS握手协议里面的Client Hello和Server Hello子消息中也有不少可选的扩展项,作用也很重要,客户端和服务器端之间的扩展项也有一定的联系,所以这篇日志就把Client Hello和Server Hello的扩展项总结一下,扩展项最显著的一个特点就是可以让客户端和服务器端在不更新TLS协议版本的基础上使用更多的其他功能。

 

TLS/SSL协议扩展

在TLS握手层协议中提供了可选的扩展项,扩展结构由扩展类型的具体的扩展数据两部分组成:

//扩展项结构
struct {
	ExtensionType extension_type;
	opaque extension_data<0..2^16-1>;
} Extension;

扩展类型ExtensionType是一个枚举类型:

//扩展类型
enum {
	server_name(0), //服务器名称
	max_fragment_length(1), //最大fragment长度协商
	client_certificate_url(2), //客户端证书URL
	trusted_ca_keys(3),
	truncated_hmac(4), //截断的HMAC
	status_request(5), (65535) //支持的证书状态请求
	supported_groups(10),
	ec_point_formats(11),
	signature_algorithms(13), //支持的签名算法和摘要算法
	application_layer_protocol_negotiation(16), //支持的应用层协议
	signed_certificate_timestamp(18), //支持证书透明度机制
	extened_master_secret(23), //扩展的主密钥
	SessionTicketTLS(35), //支持没有状态的会话恢复
	renegotiation_info(65281), //支持安全的重协商
} ExtensionType;

里面列出了一些TLS握手层协议支持的扩展项,例如扩展支持证书吊销状态请求,扩展签名算法和摘要算法,扩展支持证书透明度机制等,可以说功能十分丰富(且都是前面接触过的),上图中括号里的数字表示的是扩展类型的编号,扩展类型占用两个字节的固定空间,扩展数据占用的空间则是可变的。在TLS握手层协议中,扩展的使用通常是先由客户端向服务器端发送扩展列表,里面是客户端支持的扩展项,扩展列表包含在Client Hello子消息中,服务器接收到自消息后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值