-
-
Notifications
You must be signed in to change notification settings - Fork 9.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Halo默认开启HSTS导致未设置SSL证书的其他二级域名无法正常访问 #4943
Comments
这个影响范围还是比较广的,只要开了 Halo,其他所有二级域名必需设置证书。 通过在 Nginx 的 Halo 部分单独配置 |
cc @halo-dev/sig-halo |
Hi @caneman ,建议移除掉这一行: proxy_set_header X-Forwarded-Proto $scheme; 如果 Halo 检测到 HTTP scheme 是 /kind support |
我今天在创建halo博客的时候碰到了同样的问题,最后只能通过给子域名配置证书来解决。 |
Hi @Asteri5m , 感谢反馈! 目前,移除这一行不会对 Halo 产生影响。不过可以考虑在 Halo 侧默认不配置响应头 Strict-Transport-Security 的 includeSubDomains 参数。 /kind improvement |
#### What type of PR is this? /kind improvement /area core /milestone 2.16.x #### What this PR does / why we need it: This PR ignores `includeSubdomains` for HSTS header. See #4943 for more. #### Which issue(s) this PR fixes: Fixes #4943 #### Does this PR introduce a user-facing change? ```release-note 修复开启 HSTS 可能会导致未开启 HSTS 的子域名站点无法访问的问题 ```
系统信息
Halo版本: 2.10
部署方式: docker
网络拓扑: halo、nginx、web2同属一个Network
Nginx相关配置
使用的哪种方式运行?
Docker
在线站点地址
No response
发生了什么?
主域名 xx.com(halo,设置了SSL证书),a.xx.com(另一个web站点,未设置SSL证书)。
因Halo默认响应头设置了: Strict-Transport-Security: max-age=31536000 ; includeSubDomains
(当浏览器访问网站时,HSTS 会强制浏览器仅通过安全的 HTTPS 连接与该网站通信,即使用户尝试通过 HTTP 访问)
导致当访问过 xx.com(halo主站)后,所有的未设置 ssl 的二级域名都会爆「NET::ERR_CERT_COMMON_NAME_INVALID」错误(域名与证书不匹配)。
原因在于,由于halo的响应头设置,会导致访问 a.xx.com,也强制走https,又因为a.xx.com没有证书,而Nginx 在处理没有配置SSL的HTTPS 请求时会默认到另一个具有 SSL 配置的服务器块(xx.com的证书)。而浏览器判定证书(xx.com)和域名(a.xx.com)不匹配,报错。
经实验以下方案均不奏效
可以稳定复现
xx.com(halo,设置了SSL)
a.xx.com(未设置SSL)
b.xx.com(设置SSL)
c.xx.com(未设置SSL)
清除浏览器缓存
a、b、c 任意次序、任意次数访问均正常,一旦访问主站 xx.com(halo), 再次访问 a、c 即报错,b不受影响。
相关日志输出
No response
附加信息
No response
The text was updated successfully, but these errors were encountered: