veImageX 支持您通过对域名启用 HSTS(HTTP Strict Transport Security)功能,来强制客户端(例如:浏览器)使用 HTTPS 协议与 veImageX-CDN 节点创建连接,从而降低用户的第一次访问请求被恶意拦截的风险。
HSTS(HTTP Strict Transport Security)是一种网络安全的策略机制,目的是保护用户在访问 HTTPS 站点的期间免受降级攻击和 cookie 劫持。在您对站点启用 HSTS 后,站点的响应中会包含 Strict-Transport-Security
响应头。Strict-Transport-Security
响应头告知浏览器其向站点发送的每个请求都必须使用 HTTPS 协议。
Strict-Transport-Security
响应头还包含两个参数,具体如下表所示。
参数 | 说明 |
---|---|
max-age | HSTS Header 的过期时间,配置范围为 0~365 天,单位为秒。 |
includeSubDomains | 可选参数。如果包含这个参数,说明该域名及其所有子域名均开启HSTS。 |
HTTP 是一个不安全的协议。当用户在浏览器中指定 HTTP 协议向一个站点发送请求时,该请求可能会被劫持并重定向到恶意站点。为了避免 HTTP 请求访问加速域名,veImageX 提供了以下两个配置:
在您配置强制跳转后,如果浏览器向 veImageX 发送了一个 HTTP 请求,veImageX 会返回 301 或者 302 响应状态码通知浏览器将 HTTP 请求跳转到 HTTPS 请求。
但即使您配置了强制跳转,用户依然可以在浏览器中指定 HTTP 协议向 veImageX 发送 HTTP 请求。虽然会被跳转到 HTTPS 请求,这些 HTTP 请求在到达 veImageX 前依然有被劫持的风险。
相比强制跳转,HSTS 提供了一个更安全的方案。在您为加速域名启用 HSTS 后,veImageX 的响应中会包含 Strict-Transport-Security
响应头。如果浏览器成功使用 HTTPS 协议对 veImageX 发送过一次请求,浏览器就会缓存该响应头。假设之后用户再次在浏览器中指定 HTTP 协议访问 veImageX。在发送请求前,浏览器会将 HTTP 转换成 HTTPS。由于转换过程在浏览器侧发生,就能极大降低浏览器向 veImageX 发送的 HTTP 请求的数量。同时,也降低了 HTTP 请求被劫持的风险。
虽然 HSTS 方案更安全,但是要使浏览器遵循 Strict-Transport-Security
响应头将 HTTP 转换成 HTTPS,以下条件必须满足:
Strict-Transport-Security
响应头。Strict-Transport-Security
响应头的缓存有效时间,参见配置说明。在加速域名启用了 HSTS 后,veImageX 在响应任何请求时都会返回 Strict-Transport-Security
响应头。但要使浏览器缓存该响应头,浏览器必须成功使用 HTTPS 协议向 veImageX 发送过一次请求。因此,在您启用 HSTS 时,推荐您也启用强制跳转并设置 跳转类型 为 HTTP 到 HTTPS。
在您启用了 HSTS 与强制跳转后,如果用户使用浏览器向 veImageX 发送了一个 HTTP 请求,浏览器与 veImageX 的交互过程如下:
Strict-Transport-Security
响应头。Strict-Transport-Security
响应头。此时,由于还未成功使用 HTTPS 协议向 veImageX 发送过一次请求,浏览器不缓存该响应头。Strict-Transport-Security
响应头。假设该响应头的有效时间是 10 分钟,并且该 HTTPS 请求成功获取了请求的文件。Strict-Transport-Security
响应头进行缓存。在 10 分钟内,假设该用户使用浏览器再次向 veImageX 发送 HTTP 请求。此时,浏览器与 veImageX 的交互过程如下:
Strict-Transport-Security
响应头。注意
Strict-Transport-Security
响应头已过期,当该用户向 veImageX 发送 HTTP 请求时,会重复浏览器与 veImageX 的交互过程中描述的步骤。Strict-Transport-Security
响应头。Strict-Transport-Security
响应头已过期。请确保已对该域名启用 HTTPS 加速,即成功配置 HTTPS 证书。
登录 veImageX 控制台,单击服务管理。选择相应的图片服务,单击基础配置。
在分发配置页签的域名信息中,单击域名的管理按钮。
在配置页面,单击 HTTPS 配置并进入页面后。单击编辑按钮,启用 HSTS 配置。
配置项 | 说明 |
---|---|
子域名 | HSTS 配置是否应用于子域名站点。该配置取值如下:
注意 如果您设置 子域名 为 包含,veImageX 返回的响应头是告知浏览器向所有子域名发送的请求也必须使用 HTTPS 协议。此时,子域名站点必须是可以使用 HTTPS 协议访问的。同时,子域名也有 HTTP 强制跳转到 HTTPS 的类似配置。 |
过期时间 |
注意
|
单击提交按钮,保存当前配置。
Strict-Transport-Security: max-age=6;includeSubDomains
Strict-Transport-Security: max-age=86400
下面以 Google Chrome 和 Microsoft Edge 为例,为您介绍如何在浏览器中管理 HSTS 配置。
在 Chrome 或 Edge 中,访问以下 URL:
chrome://net-internals/#hsts
在打开的页面中,您可以:
Not found
。dynamic_sts_observed
表示浏览器缓存该域名的时间,时间格式是 Unix 时间戳。dynamic_sts_expiry
表示该域名在 HSTS 缓存中的过期时间。在您查询一个域名时,结果数据可能会有 1 分钟的延时。