You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS+AGIC架构下ASP.Net Core 6.0 WebAPI需实现HSTS吗?有何要求?

HSTS 实现疑问解答

是否需要实现HSTS?

需要。HSTS的核心作用是强制客户端(浏览器、API客户端等)仅通过HTTPS与服务端通信,防范HTTP降级攻击和中间人劫持。虽然你的SSL终止在Azure应用网关,但客户端与网关之间的HTTPS链路是HSTS要保护的核心环节——只要客户端通过HTTPS访问网关,获取到HSTS头后,后续就会自动跳过HTTP尝试,直接用HTTPS请求,从根源上避免HTTP层面的风险。

至于AGIC与后端Pod之间的HTTP通信,属于K8s集群内部流量,不在HSTS的保护范畴内,HSTS规则只作用于外部客户端到入口网关的通信。

实现HSTS的基础设施要求

1. 应用网关需配置可信SSL证书

  • 必须使用公共可信CA签发的SSL证书,自签证书无法触发HSTS生效(浏览器会忽略非信任证书对应的HSTS头)
  • 证书需覆盖WebAPI对外暴露的所有域名,若计划启用includeSubDomains选项,还要包含所有相关子域名

2. 在应用网关层面配置HSTS(推荐方案)

由于SSL终止在网关,直接在网关配置HSTS是最优选择——既能统一管理所有后端服务的安全规则,也避免后端服务重复配置:

  • 通过Azure门户或Azure CLI进入目标应用网关的配置界面
  • 在HTTP设置中启用HSTS,配置关键参数:
    • max-age:建议设为31536000秒(1年),这是行业通用的最小推荐值,确保HSTS规则能长期生效
    • includeSubDomains(可选):如果需要将HSTS规则应用到当前域名的所有子域名,开启此选项
    • preload(可选):若要将域名加入浏览器的HSTS预加载列表,需满足max-age≥1年、启用includeSubDomains、无HTTP访问入口等条件,需谨慎操作(加入后很难移除)

3. 强制外部访问仅通过HTTPS

  • 应用网关必须配置HTTP到HTTPS的自动重定向规则,将所有80端口的请求跳转至443端口——这是HSTS生效的前提,客户端需要先通过HTTPS获取到HSTS头,才能遵循规则
  • 禁止将HTTP端口直接暴露到公网,确保外部流量只能通过HTTPS进入

4. 后端WebAPI配置(可选冗余)

如果想在后端也补充HSTS头(作为网关配置的备份),可以在ASP.Net Core 6的Program.cs中添加以下代码:

builder.Services.AddHsts(options =>
{
    options.MaxAge = TimeSpan.FromDays(365);
    options.IncludeSubDomains = true;
    options.Preload = true;
});

// 注意中间件顺序:放在UseRouting之后,UseEndpoints之前
app.UseHsts();

不过需要注意:AGIC默认会透传后端的响应头,但网关层的配置优先级更高,且更易于统一管理,因此优先推荐网关层面配置。


内容的提问来源于stack exchange,提问作者One Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:54:28