视频点播支持在域名管理的协议配置中配置 HSTS。开启后,CDN 将会响应 HSTS 头部:Strict-Transport-Security
,可以强制客户端使用 HTTPS 与 CDN 节点建连,建议同时配置 HTTP 强制跳转到 HTTPS。本文为您介绍 HSTS 配置的功能介绍和操作步骤等内容。
HSTS 配置适用于自定义源站加速域名。
HSTS 的全称是 HTTP Strict Transport Security,是一种网络安全的策略机制。HSTS 的目的是保护用户在访问 HTTPS 站点的期间免受降级攻击和 cookie 劫持。 在您对站点启用 HSTS 后,站点的响应中会包含 Strict-Transport-Security
响应头。Strict-Transport-Security
响应头告知浏览器其向站点发送的每个请求都必须使用 HTTPS 协议。
HTTP 是一个不安全的协议。当用户在浏览器中指定 HTTP 协议向一个站点发送请求时,该请求可能会被劫持并重定向到恶意站点。为了避免 HTTP 请求访问加速域名,视频点播提供了以下两个配置:
在您配置强制跳转后,如果浏览器向视频点播发送了一个 HTTP 请求,视频点播会返回 301 或者 302 响应状态码通知浏览器将 HTTP 请求跳转到 HTTPS 请求。关于更多强制跳转的信息,参见强制跳转。
但是,即使您配置了强制跳转,用户依然可以在浏览器中指定 HTTP 协议向视频点播发送 HTTP 请求。虽然会被跳转到 HTTPS 请求,这些 HTTP 请求在到达视频点播前依然有被劫持的风险。
相比强制跳转,HSTS 提供了一个更安全的方案。在您为加速域名启用 HSTS 后,视频点播的响应中会包含 Strict-Transport-Security
响应头。如果浏览器成功使用 HTTPS 协议对视频点播发送过一次请求,浏览器就会缓存该响应头。假设之后用户再次在浏览器中指定 HTTP 协议访问视频点播。在发送请求前,浏览器会将 HTTP 转换成 HTTPS。由于转换过程在浏览器侧发生,就能极大降低浏览器向视频点播发送的 HTTP 请求的数量。同时,也降低了 HTTP 请求被劫持的风险。
虽然 HSTS 方案更安全,但是要使浏览器遵循 Strict-Transport-Security
响应头将 HTTP 转换成 HTTPS,需要满足以下条件:
Strict-Transport-Security
响应头。Strict-Transport-Security
响应头的缓存有效时间,参见下方操作步骤中的说明。在加速域名启用了 HSTS 后,视频点播在响应任何请求时都会返回 Strict-Transport-Security
响应头。但要使浏览器缓存该响应头,浏览器必须成功使用 HTTPS 协议向视频点播发送过一次请求。因此,在您启用 HSTS 时,推荐您也启用强制跳转并设置跳转类型 为 HTTP 到 HTTPS。
说明
当您在视频点播控制台中启用 HSTS 时,视频点播会提示您是否需要启用强制跳转的配置,参见操作步骤。
在您启用了 HSTS 与强制跳转后,如果用户使用浏览器向视频点播发送了一个 HTTP 请求,浏览器与视频点播的交互过程如下:
Strict-Transport-Security
响应头。Strict-Transport-Security
响应头。此时,由于还未成功使用 HTTPS 协议向视频点播发送过一次请求,浏览器不缓存该响应头。Strict-Transport-Security
响应头。假设该响应头的有效时间是 10 分钟,并且该 HTTPS 请求成功获取了请求的文件。Strict-Transport-Security
响应头进行缓存。在 10 分钟内,假设该用户使用浏览器再次向视频点播发送 HTTP 请求。此时,浏览器与视频点播的交互过程如下:
Strict-Transport-Security
响应头。注意
如果缓存的 Strict-Transport-Security
响应头已过期,当该用户向视频点播发送 HTTP 请求时,会重复浏览器与视频点播的交互过程中描述的步骤。
需要注意的是,即使您已启用了 HSTS 与强制跳转,视频点播收到的 HTTP 请求是无法避免的。因为在以下任意情况下,浏览器不会将 HTTP 转换成 HTTPS:
Strict-Transport-Security
响应头。Strict-Transport-Security
响应头已过期。该加速域名已开启 HTTPS。
登录火山引擎视频点播控制台,进入空间。
单击左侧导航栏分发加速设置 > 域名管理,进入域名管理页面。
选择自定义源站加速域名页签,在域名列表中找到您需要配置的域名,单击操作列的配置按钮。
进入加速域名配置页面,选择协议配置页签。
单击页面下方的修改配置按钮。HSTS 配置默认关闭。您可以在 HSTS 配置下方,将状态设为开启。开启后,支持设置过期时间和子域名。
注意
HTTP 请求时,客户端不会进行 HSTS 缓存。建议同时设置 HTTP 强制跳转到 HTTPS,请确认是否配置。
参数 | 说明 |
---|---|
过期时间 | 表示
说明
|
子域名 | 表示 HSTS 配置是否应用于子域名站点。取值如下:
注意 如果您设置 子域名 为 包含,视频点播返回的响应头是告知浏览器向所有子域名发送的请求也必须使用 HTTPS 协议。此时,子域名站点必须是可以使用 HTTPS 协议访问的。同时,子域名也有 HTTP 强制跳转到 HTTPS 的类似配置。 |
举例
例子 1:您指定过期时间是 6 秒并且包含子域名。此时,视频点播实际返回的响应头如下:
Strict-Transport-Security: max-age=6;includeSubDomains
例子 2:您指定过期时间是 1 天并且不包含子域名。此时,视频点播实际返回的响应头如下:
Strict-Transport-Security: max-age=86400
下面以 Google Chrome 和 Microsoft Edge 为例,介绍如何在浏览器中管理 HSTS 配置。
在 Chrome 或 Edge 中,访问以下 URL:
chrome://net-internals/#hsts
在打开的页面中,您可以:
将一个域名添加到浏览器的 HSTS 缓存中。
从浏览器的 HSTS 缓存中删除指定的域名。
查询一个域名是否存在于浏览器的 HSTS 缓存中。
Not found
。dynamic_sts_observed
表示浏览器缓存该域名的时间,时间格式是 Unix 时间戳。dynamic_sts_expiry
表示该域名在 HSTS 缓存中的过期时间。在您查询一个域名时,结果数据可能会有 1 分钟的延时。