使用https的HSTS需要注意的一个问题

HSTS(HTTP Strict Transport Security) 简单来说就是由浏览器进行http向https的重定向。如果不使用HSTS,当用户在浏览器中输入网址时没有加https,浏览器会默认使用http访问,所以对于https站点,通常会在服务端进行http至https的重定向。如果用了HSTS,就可以减少服务端的这次重定向。

当我们部署https时,发现HSTS的这个用处后,立马就使用了它,使用方法很简单——在响应头中加上 strict-transport-security:max-age=31536000 。

但后来通过星巴克的WiFi访问我们的https站点时发现了一个问题。在浏览器中输入网址后,没有出现星巴克WiFi的登录页面,而是浏览器认为这是不安全连接,不允许访问,只能先访问一个http站点,出现星巴克WiFi登录页面并完成登录后才能访问我们的https站点。

背后的原因很简单,由于我们的站点启用了HSTS,浏览器默认会以https方式发出请求,星巴克的WiFi拦截了请求,以http的方式返回了WiFi登录页面,浏览器收到后一看这不安全,立马停止连接。如果不启用HSTS,在服务端进行重定向,就不会有这个问题。

只要基于http进行验证的WiFi都会有这个问题,所以在部署https时是否启用HSTS需要考虑这个因素。如果你原先启用HSTS,现在想取消,不能直接去掉strict-transport-security响应头,而是要改为 strict-transport-security:max-age=0 ,不然之前使用了HSTS的浏览器在过期之前会一直使用HSTS。

时间: 2024-10-12 23:59:28

使用https的HSTS需要注意的一个问题的相关文章

配置Https 和 HSTS

1. 视频 https://www.bilibili.com/video/av33344382/?p=2 using System; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; namespace BlogDemo.Api { publi

从 HTTP 到 HTTPS 再到 HSTS

近些年,随着域名劫持.信息泄漏等网络安全事件的频繁发生,网站安全也变得越来越重要,也促成了网络传输协议从 HTTP 到 HTTPS 再到 HSTS 的转变. HTTP HTTP(超文本传输协议) 是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP 是互联网数据通信的基础.它是由万维网协会(W3C)和互联网工程任务组(IETF)进行协调制定了 HTTP 的标准,最终发布了一系列的 RFC,并且在1999年6月公布的 RFC 2616,定义了 HTTP 协议中现今广泛使用的一个版本--H

全站HTTPs,没那么简单

“全站 HTTPs”俨然成了目前的热门话题,很多网站都在摩拳擦掌要实行全站 HTTPs.凑巧,我们(沪江)也在推行这个计划. 一开始大家想得都很简单,把证书购买了.配好了,相应的路径改一改,就没有问题.事实也确实如此,单个独立站点的 HTTPs 改造是很容易的.一旦走向“全站”,才发现事情远远比想象的要复杂,全站意味着所有资源面对所有客户端,涉及的因素异常多,网络上又没有太多资料,只能自己摸索.下面我简单讲讲遇到的几个问题,提供一些经验给大家参考. HSTS 如果一个网站既提供了 HTTP 服务

扒一扒HTTPS网站的内幕

215年6月,维基媒体基金会发布公告,旗下所有网站将默认开启HTTPS,这些网站中最为人所知的当然是全球最大的在线百科-维基百科.而更早时候的3月,百度已经发布公告,百度全站默认开启HTTPS.淘宝也默默做了全站HTTPS. 网站实现HTTPS,在国外已经非常普及,也是必然的趋势.Google.Facebook.Twitter等巨头公司早已经实现全站HTTPS, 而且为鼓励全球网站的HTTPS实现,Google甚至调整了搜索引擎算法,让采用HTTPS的网站在搜索中排名更靠前.但是在国内,HTTP

ubuntu 生成https证书 for let's encrypt

1.安装certbot(用于自动续约证书) # 添加安装源 sudo add-apt-repository ppa:certbot/certbot # 更新apt安装源 sudo apt-get update # 安装 sudo apt-get install python-certbot-apache 2.安装letsencrypt并生成证书 # 安装 letsencrypt sudo apt-get install letsencrypt # 生成证书 # letsencrypt certo

SSL/TLS深度解析--在 Nginx上配置 HSTS、CSP 与其他

在 Nginx 上配置 HSTS HTTP响应中包含 Strict-Transport-Security 头实现网站HSTS,像下面这样配置: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload,就实现了HSTS,即-- HTTP Strict Transport Security,HTTP严格传输安全.假设TLS连接没有错误,兼容的浏览器将会在 max-age 参数指定的保留期内激活HSTS. 一旦站点

Nginx-HTTP Strict Transport Security(HSTS)

HTTP Strict Transport Security(HSTS) HTTP Strict Transport Security(通常简称为HSTS)是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源,而不是HTTP. HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接.服务器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议响应头中包含Strict-Transport-Security字段.非加密传输时设置的HSTS字段无效.

详解https是如何确保安全的?

Https介绍 1 什么是Https HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL 2 Https的作用 内容加密 建立一个信息安全通道,来保证数据传输的安全: 身份认证 确认网站的真实性 数据完整性 防止内容被第三方冒充或者篡改 3 Https的劣势 对数据进行加解密决定了

iOS UIWebView 加载https站点出现NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL,

今天在加载https站点的时候遇到如下的错误问题.所以对自己之前写的iOS内嵌webview做了一些修改,可以让它加载http站点也可以让它加载https站点. 下面是我加载https站点的时候出现的错误. error:     NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) HTTPS 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protoc