我在网站http://server.mydom.tld:80上为我的域设置了 hsts,因此浏览器转到端口 443 上的端口https://server.mydom.tld
但是,我还有其他网络服务器,在其他端口上运行。因此,当我转到http://server.mydom.tld:8888时,它会被转发到https://server.mydom.tld:8888,但该服务器未运行 https,因此请求失败。
是按照规范吗?
我注意到我没有在http://mydom.tld或http://www.mydom.tld上运行 hsts ,这可能是一个错误。
该怎么办?
是的,这是故意的。RFC 6797规定:
您应该在不同的域上运行纯 HTTP 服务,或者更好的是,使用 HTTP+TLS 服务器作为内部纯 HTTP 服务的反向代理。
当使用 HTTP 访问您的站点时,浏览器会忽略 Strict-Transport-Security 标头;这是因为攻击者可能会拦截 HTTP 连接并注入或删除标头。当您的站点通过 HTTPS 访问且没有证书错误时,浏览器就知道您的站点支持 HTTPS,并将遵守 Strict-Transport-Security 标头。
如果真的不想在另一个服务上运行 https,可以在 DNS 中添加一个别名,这样https://server.domain.tld和http://service.domain.tld:8888就在同一个 IP 上/服务器
然后可以添加从http://service.domain.tld和https://service.domain.tld到http://service.domain.tld:8888的重定向