V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sankooc
V2EX  ›  程序员

HSTS 诡异的问题

  •  
  •   sankooc ·
    sankooc · 270 天前 · 2507 次点击
    这是一个创建于 270 天前的主题,其中的信息可能已经有所发展或是发生改变。

    碰上了一个诡异问题

    nginx 配了域名转发 客户端配置 hosts 文件

        server {
            listen      80;
            server_name sso.mibox.dev;
            location / {
                proxy_pass http://127.0.0.1:10088;
            }
        }
        server {
            listen      80;
            server_name sso.mibox.com;
            location / {
                proxy_pass http://127.0.0.1:10088;
            }
        }
    

    客户端通过 curl 请求两个域名得到的响应是预期中的

    通过 chrome 打开 sso.mibox.com 是正常的

    但是打开 sso.mibox.dev 会给我 307 转发到 https 上

    HTTP/1.1 307 Internal Redirect
    Location: https://sso.mibox.dev/
    Cross-Origin-Resource-Policy: Cross-Origin
    Non-Authoritative-Reason: HSTS
    
    • nginx 只配置了这两个域名
    • chrome 的缓存清除过
    • chrome 的 hsts 设置中都未有相关这两个域名的配置
    • 换 edge 和 firefox 也是一样

    如果说有区别的话 客户端安装了自定义的 CA 相关 sso.mibox.dev 这个域名

    按理来说即使有这个 ca 也不应该影响 http 的访问

    那位大佬帮忙分析以下为什么 sso.mibox.dev 为什么浏览器会自动转发至 https


    软件版本

    • nginx: 1.22.0
    • chrome 123.0.6312.86
    13 条回复    2024-04-03 09:34:18 +08:00
    dallaslu
        1
    dallaslu  
       270 天前   ❤️ 3
    get.dev 首页说明:

    > The .dev top-level domain is included on the HSTS preload list, making HTTPS required on all connections to .dev websites and pages without needing individual HSTS registration or configuration.
    OneXT
        2
    OneXT  
       270 天前
    @dallaslu 6 啊大佬。又长知识了。
    sankooc
        3
    sankooc  
    OP
       270 天前
    @dallaslu 原来是这样... 随便起的 dev 后缀居然是预设的...
    coala
        4
    coala  
       270 天前
    可以关注下 307 Temporary Redirect 和 307 Internal Redirect 的区别,

    Internal Redirect 是浏览器行为, 都是谷歌干的。
    aikilan
        5
    aikilan  
       270 天前
    @dallaslu 学到了
    gentrydeng
        6
    gentrydeng  
       270 天前 via Android
    @sankooc #3 .DEV 全域都是 HSTS
    rrfeng
        7
    rrfeng  
       270 天前
    HSTS 有个 preload list ,写死在浏览器里的,根本不 care 你 server 什么设置。
    ---
    有个坑貌似是,chrome 会收集支持 hsts 的站点然后加入到 preload list 里,然后你就永远只能 https 没法降级了。
    shierji
        8
    shierji  
       270 天前
    这里偏个题,某办公室部分电脑能上部分电脑不能上某 ZF 网站,排查半天最后发现是不知道啥时候那个 URL 进 HSTS Preload list 了,然而丫根本不支持 HTTPS
    jim9606
        9
    jim9606  
       270 天前 via Android
    @rrfeng
    这个 preload list 是要申请的,审核要求整个域名响应都要带 HSTS includesubdomains 、preload 和足够长的 maxage ,目的是防止首次访问的 http->https 跳转就被劫持。因为很难撤回,所以只建议在 https 部署稳定可靠后再申请 preload 。

    https://hstspreload.org/

    @shierji 是不是 HSTS 头配错了(添加了 preload 属性,不打算预置的绝对不要加),然后被第三者申请 preload 了。
    qeqv
        10
    qeqv  
       270 天前
    @rrfeng 手机上经常一些网站 chrome 打不开,其他浏览器能开……,手机上还很难排查
    ZeroAsh
        11
    ZeroAsh  
       269 天前
    偏个题,可以试试直接用 certbot 搞个免费的证书~也可以用配置下域名解析,然后申请通配的免费证书,但都得定时续期~ 也有自动续期的工具,配好之后还是蛮方便的。
    ysc3839
        12
    ysc3839  
       269 天前
    @rrfeng 后加入的可以去 chrome://net-internals/#hsts 删除,preloaded 的删不了
    shierji
        13
    shierji  
       268 天前 via Android
    @jim9606 有可能是 gov.cn 整个域进 hsts preload list ,这个网站是被“传染”了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4069 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:29 · PVG 13:29 · LAX 21:29 · JFK 00:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.