ingress 因为HSTS引发307跳转问题

简介: ingress 因为HSTS引发307跳转问题

问题背景:

某客户反馈,容器服务的ingress他们同时支持http和https,ingress的ssl-redirect配置为false,但是目前它还会自动跳转到https,导致他们客户调用出现了问题。

问题分析:


1 拿到域名后使用curl -vvv http://域名/ -L 测试看了下并没有发现用户反馈有跳转的情况;


2 继续和用户沟通要他们的复现方法,大致是这样的:

(1)打开浏览器先第一次访问http,然后再访问https。

(2)然后再访问http它就跳回https了。

看到上述用户描述后,难道触发了缓存,按照用户反馈的情况我用无痕模式测试看了下,结果确实复现了,无痕模式下缓存是关闭的,看起来并不是触发了缓存什么的机制

3 开始chrom的浏览器的F12调试到network面板,看看刷新http请求,相关header请求是什么样,结果抓到了异常了,信息如下:

从请求的信息来看是HSTS而且有307的情况,这里就需要聊下什么是HSTS了,HSTS 是 HTTP 严格传输安全(HTTP Strict Transport Security) 的缩写。 这是一种网站用来声明他们只能使用安全连接(HTTPS)访问的方法。 如果一个网站声明了 HSTS 策略,浏览器必须拒绝所有的 HTTP 连接并阻止用户接受不安全的 SSL 证书。 目前大多数主流浏览器都支持 HSTS (只有一些移动浏览器无法使用它)。


HSTS 工作原理

通常,当您在 Web 浏览器中输入 URL 时,您会跳过协议部分。 例如,你输入的是 www.acunetix.com,而不是 http://www.acunetix.com。 在这种情况下,浏览器假设你想使用 HTTP 协议,所以它在这个阶段发出一个 HTTP 请求www.acunetix.com,同时,Web Server 会返回 跳转 状态码将请求重定向到 HTTPS 站点。 接下来浏览器使用 HTTPS 连接到 www.acunetix.com。 这时 HSTS 安全策略保护开始使用 HTTP 响应头。

问题到这里就比较清晰了,是nginx-ingress开启了HSTS影响到了,社区的介绍:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#hsts


解决方案:

在nginx-ingress的配置文件里面添加 hsts: false后解决。

相关文章
|
安全 网络协议 应用服务中间件
Nginx配置http跳转https
Nginx配置http跳转https
379 0
|
Kubernetes 测试技术 应用服务中间件
k8s七层代理Ingress-nginx基于cookie、请求头、权重实现灰度发布
k8s七层代理Ingress-nginx基于cookie、请求头、权重实现灰度发布
Ingress 开启 TLS / HTTPS 被忽略的细节
我们之前接入层用的SLB>Nginx ,考虑到Ingress和k8s的集成,我们用Ingress替代了Nginx,测试同学反馈在低版本浏览器上报错。
4984 0
|
2月前
IdentityServer4取消使用HTTPS问题
IdentityServer4取消使用HTTPS问题
38 3
|
4月前
|
域名解析 负载均衡 网络协议
DNS重定向
【8月更文挑战第16天】
349 1
|
6月前
|
网络协议 安全 应用服务中间件
阿里云 网站https设置 sll申请与nginx跳转配置
阿里云 网站https设置 sll申请与nginx跳转配置
204 0
|
安全 应用服务中间件 网络安全
Nginx配置Https并进行Http强制跳转Https
Nginx配置Https并进行Http强制跳转Https
Nginx配置Https并进行Http强制跳转Https
|
Web App开发 安全 数据安全/隐私保护
|
应用服务中间件 nginx Apache
|
数据库 Docker 容器
keycloak搭建开启https
keycloak搭建开启https
2552 0