查阅相关资料,发现这是浏览器的HSTS(HTTP Strict Transport Security)功能引起的。在安装配置SSL证书时,可以使用一种能使数据传输更加安全的Web安全协议,即在服务器端上开启HSTS ,它会告诉浏览器只能通过HTTPS访问,而绝对禁止HTTP方式。
因此,只要关闭浏览器的HSTS功能就可以解决这个问题,但是只能通过特定的方式,而不是清除浏览器缓存那么简单。
Chrome浏览器
1.地址栏中输入chrome://net-internals/#hsts。
2.在Delete domain security policies中输入项目的域名,并Delete(删除)。
3.可以在Query domain测试是否删除成功。
Opera浏览器
和Chrome方法一样。
Safari浏览器
1.完全关闭Safari浏览器。
2.删除~/Library/Cookies/HSTS.plist这个文件。
3.重新打开Safari即可(极少数情况下,可能需要重启系统)。
Firefox浏览器
1.关闭所有已打开的页面。
2.清空历史记录和缓存。
3.地址栏输入about:permissions。
4.搜索项目域名,并点击Forget About This Site。
快捷键Ctrl+Shift+H,搜索网站,右键点 <忘记此网站>
EDGE浏览器
1.地址栏中输入edge://net-internals/#hsts。
2.在Delete domain security policies中输入项目的域名,并Delete(删除)。
3.可以在Query domain测试是否删除成功。
_________________________________________
HSTS 是 HTTP 严格传输安全(HTTP Strict Transport Security)的缩写。这是一种网站用来声明他们只能使用安全连接(HTTPS)访问的方法。
如果一个网站声明了 HSTS 策略,浏览器必须拒绝所有的 HTTP 连接并阻止用户接受不安全的
SSL 证书。目前大多数主流浏览器都支持 HSTS(只有一些移动浏览器可能无法使用它)。
HSTS 的工作原理如下:通常,当在 Web 浏览器中输入 URL 时,若跳过协议部分,浏览器会假设使用 HTTP 协议并发出 HTTP 请求,然后 Web 服务器返回 301 状态码将请求重定向到 HTTPS 站点,接下来浏览器使用 HTTPS 连接到该站点。而当 HSTS 安全策略生效时,服务器通过 HTTP 响应头中的“strict-transport-security”向浏览器提供详细说明。例如“strict-transport-security:max-age=31536000;includesubdomains;preload”,表示从接收该响应头的时刻起,接下来的一年(31536000 秒)内连接到该网站及其子域都必须使用 HTTPS 连接,完全不允许 HTTP 连接。如果浏览器接收到使用 HTTP 加载资源的请求,则必须尝试使用 HTTPS 请求替代,如果 HTTPS 不可用,则必须直接终止连接。此外,如果证书无效,浏览器将阻止建立连接。
HSTS 的主要作用包括避免用户遭受使用 SSL Stripping(剥离)的中间人攻击,也是一个防止 cookie 劫持的有效方法。
然而,HSTS 并非完全安全。首次访问网站时,用户不受 HSTS 保护,因为攻击者可在中间人攻击中删除或添加头部,而 HSTS 报头只有通过 HTTPS 传递才可信。另外,HSTS 报头中的“max-age”会在每次浏览器读取时刷新,最大值为两年,这意味着只要两次访问之间不超过两年,保护就是永久性的;若超过两年未访问一个网站,它会被视为新网站。
为了增强安全性,可以使用 HSTS 预加载列表。Chromium 项目维护了一个使用 HSTS 的网站列表,该列表通过浏览器发布。如果把网站添加到预加载列表中,浏览器会首先检查内部列表,这样网站就永远不会通过 HTTP 访问,甚至在第一次连接尝试时也不会。不过,要将域名添加到 HSTS 预加载列表,该域的站点必须满足一些要求,例如拥有有效的证书和最新的密码、将所有通过 HTTP 的访问请求重定向到 HTTPS、确保以上要求适用于所有域名和子域名(根据 DNS 记录)、通过 HTTPS 服务返回带有 basedomain、max-age(至少为 31536000 即 1 年)、includesubdomains 指令和 preload 指令的“strict-transport-security”header 等。访问
hstspreload.org 并使用表格提交域名,如果符合条件,域名将被加入队列。
需要注意的是,浏览器不能访问或下载预加载列表,它作为硬编码资源和新的浏览器版本一起分发。这导致结果出现在列表中需要相当长的时间,而域从列表中删除也需要较长时间。如果希望将站点添加到列表中,就必须确保能够在较长时间内保持对所有资源的完全 HTTPS 访问,否则网站可能会完全无法访问。
如果要从 Chrome 的 HSTS 缓存中删除一个域名,可以访问 chrome://net-internals/#hsts,在“delete domain security policies”下的文本框中输入要删除的域,点击旁边的“delete”按钮。之后可检查移除是否成功,即在“query hsts/pkp domain”下的文本框中输入要验证的域,点击“query”按钮,返回“not found”则表示删除成功。但如果域名在 HSTS 预加载列表中,清除 HSTS 缓存将无效,并且无法强制进行 HTTP 连接。
总的来说,HSTS 是一种有用的网络安全机制,可提高网站的安全性和可靠性,有效防范中间人攻击和跨站请求伪造等攻击。但同时也需要注意其局限性,并正确配置和管理以确保安全性。
发表评论 取消回复