8.11. 启用 HTTP 严格传输安全性
HTTP 严格传输安全性 (HSTS) 策略是一种安全增强,可确保主机上只允许 HTTPS 流量。所有 HTTP 请求都会默认丢弃。这可用于确保与网站安全交互,或提供安全应用程序让用户受益。
当 HSTS 启用时,HSTS 会添加一个 Strict Transport Security 标头到站点的 HTTPS 响应。您可以在要重定向的路由中使用 insecureEdgeTerminationPolicy
值,以将 HTTP 发送到 HTTPS。但是,当启用 HSTS 时,客户端会在发送请求前将所有来自 HTTP URL 的请求更改为 HTTPS,从而消除对重定向的需求。客户端不需要支持此功能,而且也可通过设置 max-age=0
来禁用。
HSTS 仅适用于安全路由(边缘终止或重新加密)。其配置在 HTTP 或传递路由上无效。
要将 HSTS 启用到路由,请将 haproxy.router.openshift.io/hsts_header
值添加到边缘终止或重新加密路由:
apiVersion: v1 kind: Route metadata: annotations: haproxy.router.openshift.io/hsts_header: max-age=31536000;includeSubDomains;preload
确保 haproxy.router.openshift.io/hsts_header
值的参数中没有空格,且没有其他值。仅需要 max-age
。
所需的 max-age
参数指示时间长度(以秒为单位),HSTS 策略生效。每当从主机收到含有 HSTS 标头的响应时,客户端会更新 max-age
。如果 max-age
超时,客户端会丢弃该策略。
可选 includeSubDomains
参数告知客户端主机的所有子域与主机相同。
如果 max-age
大于 0,可选的 preload
参数允许外部服务将此站点包含在 HSTS 预加载列表中。例如,Google 等站点可以构造设有 preload
的站点的列表。浏览器可以使用这些列表来确定哪些站点仅通过 HTTPS 与 通信,即使在哪些站点与站点交互之前也是如此。如果不设置 preload
,他们需要通过 HTTPS 与站点通信以获取标头。