web服务HSTS相关问题

发现问题

在使用新设备的时候访问域名,直接输入域名访问,会默认访问 http,但是 web 服务没开启 http 的话就会访问不了。需要手动输入 https://域名..

HSTS

deepseek 搜索结果:

HSTS(HTTP Strict Transport Security) 是一种安全策略机制,用于强制浏览器通过 HTTPS 与服务器通信,防止 HTTP 协议下的中间人攻击(如 SSL Stripping 攻击)。它通过 HTTP 响应头告诉浏览器,在指定时间内(通过 max-age 参数设置),所有与该域名的通信都必须使用 HTTPS。

HSTS 的工作原理

  1. 首次访问:

当用户首次访问网站时,服务器会在 HTTP 响应头中包含 Strict-Transport-Security 字段。

浏览器收到该字段后,会在指定时间内(max-age)记住该网站必须使用 HTTPS。

  1. 后续访问:

在 max-age 有效期内,即使用户手动输入 http://,浏览器也会自动将请求转换为 https://。

如果 HTTPS 连接失败(例如证书无效),浏览器会直接拒绝连接,而不是降级为 HTTP。

HSTS 响应头格式

HSTS 通过 HTTP 响应头 Strict-Transport-Security 来启用,常见的格式如下:

1
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

max-age

指定 HSTS 的有效时间(以秒为单位)。

例如,max-age=31536000 表示有效期为 1 年。

includeSubDomains(可选):

表示 HSTS 策略适用于当前域名及其所有子域名。

例如,如果主域名是 example.com,启用该选项后,sub.example.com 也会强制使用 HTTPS。

preload(可选):

表示希望将域名加入浏览器的 HSTS 预加载列表。

预加载后,即使首次访问,浏览器也会强制使用 HTTPS。

HSTS 的优点

  1. 防止 SSL Stripping 攻击:

攻击者无法将 HTTPS 连接降级为 HTTP,从而保护用户数据安全。

  1. 提升安全性:

强制使用 HTTPS,避免用户意外使用不安全的 HTTP 连接。

  1. 减少重定向延迟:

浏览器直接使用 HTTPS,无需先尝试 HTTP 再重定向。

HSTS 的缺点

  1. 首次访问风险:

在首次访问时,如果用户通过 HTTP 连接,仍然可能受到攻击。

可以通过加入 HSTS 预加载列表来解决。

  1. 配置错误可能导致网站不可访问:

如果服务器配置错误(例如 HTTPS 证书无效),浏览器会拒绝连接,用户无法访问网站。

  1. 回退困难:

一旦启用 HSTS 并设置了较长的 max-age,在有效期内无法回退到 HTTP。

IIS 设置

IIS 网站的绑定里添加 http,然后在 IIS 网站空白页右键,管理网站,HSTS。
启用,将 HTTP 重定向到 HTTPS