本文介绍如何在 ALB 控制台中为 HTTPS 监听器配置扩展证书。“扩展证书”功能适用于同一台服务器上部署了多个站点且不同站点关联不同证书的场景。
服务器名称指示(Server Name Indication,简称 SNI) 是 TLS 协议的一个扩展。在同一台服务器上部署了多个站点且不同站点关联不同证书的场景下,SNI 解决了以下问题:
如果客户端使用 HTTP 协议连接服务器,服务器通过客户端请求中的 Host 头部判断客户端需要访问的站点。但是如果客户端使用 HTTPS 协议连接服务器,在数据传输前会有一个 TLS 握手的过程。在该过程中,客户端还未传递 Host 头部给服务器,因此服务器无法判断需要发送给客户端的证书。该情况下,客户端可以使用 SNI 扩展告知服务器需要访问的站点。这样服务器就能在 TLS 握手阶段发送相应的证书给客户端。
ALB 支持 SNI。当监听器接收到客户端发送的包含 SNI 扩展的消息时,监听器可以将目标域名对应的证书发送给客户端。但是,为了实现上述功能,您首先需要在监听器上配置目标域名的证书,即配置“扩展证书”。一个 HTTPS 监听器最多可以配置 20 个扩展证书。
ALB 按照您配置的域名、转发规则和证书的对应关系来选择证书。详细流程,请参见证书匹配。
您已经创建了一个 HTTPS 监听器。
为基础版 ALB 实例配置扩展证书时,您需要同时指定该证书所关联的域名。
此外,您还需要在监听器中配置针对该域名的转发规则。这样,相应的证书配置才会下发生效。例如,如果您配置了 example.com 的扩展证书,还需配置一条针对 example.com 的转发规则。转发规则中配置的域名必须与扩展证书关联的域名完全相同。
基础版 ALB 实例支持以下来源的证书:
使用 ALB 侧的证书,您需要:
使用证书中心的证书,您需要:
使用证书中心证书的详细说明,请参考ALB 使用证书中心的证书。
推荐您使用证书中心的证书。在证书中心控制台,您可以一站式进行证书的购买、上传、管理等操作。
在了解证书匹配流程前,请先了解以下概念:
对于基础版 ALB 实例,您需要在配置扩展证书时手动指定证书关联的域名以及在转发规则中配置这些域名。这些操作相当于配置了域名、转发规则和证书之间的关联。
在接收到一个客户端请求时,监听器会按照以下流程进行证书匹配并发送证书给客户端:
说明
在进行转发规则匹配时,系统支持精确匹配和泛域名匹配。如果请求中的域名同时匹配到一个精确域名的转发规则和一个泛域名的转发规则,则监听器会选择精确域名的转发规则,并将该转发规则关联的证书发送给客户端。
假设您在一个监听器下配置了 2 本扩展证书:cert-1 和 cert-2。您为 cert-1 证书关联的域名为 *.example.com,为 cert-2 关联的域名为 www.example.com。您在转发规则 rule-1 中配置了 *.example.com,在转发规则 rule-2 中配置了 www.example.com。
请求的域名 | 匹配到的转发规则 | 监听器动作 |
---|---|---|
www.example.com | rule-2 | 将 cert-2 返回给客户端 |
a.example.com | rule-1 | 将 cert-1 返回给客户端 |
a.b.example.com | 无 | 将默认证书返回给客户端 |
example.com | 无 | 将默认证书返回给客户端 |
创建转发规则。转发规则中须包含您在配置扩展证书时指定的域名。相关操作,请参考创建转发规则(基础版)。