怎么在Chrome和Firefox浏览器中清除HSTS设置?
HSTS代表的是HTTPS严格传输安全协议,它是一个网络安全政策机制,能够强迫浏览器只通过安全的HTTPS连接(永远不能通过HTTP)与网站交互。这能够帮助防止协议降级攻击和cookie劫持。
HSTS最初是为了响应Moxie Marlinspike在2009 BlackHat Federal(2009年黑帽安全大会)上进行的题为“实践中击败SSL的新技巧”的演讲中所提出的一个漏洞而创建的。HSTS所防御的特定漏洞就是利用的是Marlinspike发布的一款叫做SSLStrip的工具。
本质上,这个工具是通过将安全的HTTPS连接转换回不安全的HTTP连接来工作的。通过告知浏览器应当使用HTTPS连接,HSTS能够修复这一问题。HSTS还能帮助避免Firesheep等常见工具窃取基于cookie的登录凭证。
不幸的是,部分HSTS设置可能会不经意地造成浏览器错误。例如,如果你使用的是Chrome,你可能就会遇到:
“隐私错误:你的连接不是私人的”(NET::ERR_CERT_AUTHORITY_INVALID)。
如果你试图进入另一个浏览器上的同一个站点,并且不会遇到相同的问题,那么HSTS设置对你的原始浏览器所造成的影响可能就会是一个问题。在这种情况下,你将需要清除它们。以下是在谷歌Chrome和Mozilla Firefox上清除它们的具体方法。
清除和忘记流行的浏览器中的HSTS设置。
如果你的浏览器已经为域名存储了HSTS设置,而你之后又试图通过HTTP或断开的HTTPS连接(错配的主机名,过期的证书等)进行连接,你就会收到一个错误。不同于其他的HTTPS错误,与HSTS有关的错误是不能忽视的。这是因为浏览器已经收到了明确的指示,表示除了安全的连接,不允许其他任何情况。
HSTS设置包括了一个“内容能够被缓存的时间”选项,它会告诉浏览器在再次进行检查之前会缓存和记住设置多久。为了立即处理完成这个错误,你将需要在你的浏览器上删除这个域名的本地HSTS设置。具体操作步骤将在下文做介绍。
这些设置需要在每个浏览器中进行清除。作为一名开发人员,如果你正在测试HSTS配置,你可能就会遇到这一错误。在Chrome中,你可能会在本地主机上接收到这一错误。如果你在实际的网站上为终端用户部署了HSTS,那么根据你的受众的多少,纠正它们当前所拥有的错误可能就是可行的。每个用户需要删除其本地HSTS设置,或者根据之前设置的‘内容能够被缓存的时间’等待它们过期。
同样需要注意的是,如果网站仍在提供HSTS标头,一旦你再次访问这个网站,你的浏览器就会存储它。因此如果你不希望再次发生这一错误,你就必须首先停止发送该标头。
Chrome和Firefox都没有用于HSTS错误的独特的错误代码,但间隙错误页面将包含关于HSTS的信息。
删除HSTS设置
请注意,这些说明主要对正在测试HSTS和现在需要删除设置的开发人员有用。对于那些你不能控制的网站,如果这些网站仍在提供HSTS标头,那么删除浏览器的本地HSTS设置就是没有帮助的,因为你的浏览器将会在每次访问/刷新后再次保存设置。
在Chrome中,你可能会看到错误“NET::ERR_CERT_COMMON_NAME_INVALID。”如果你点击Chrome中的高级(Advanced)选项,错误信息就将包括“您现在无法访问domain.com,因为该网站使用了HSTS。”这将能够确认错误是与HSTS有关的。在本地主机上,你可能会看到错误“该网站无法提供安全的连接。”
在Firefox中,间隙页面将会显示:“该网站使用了HTTP严格传输安全(HSTS)协议来指定Firefox只能通过安全的方式来连接它。因此,为该证书添加一个例外是不可能的。”
如果你已经确定错误是由于缓存的HSTS设置所造成的,请遵照以下说明来解决这一错误:
如何删除Chrome中的HSTS设置:
- 导航到chrome://net-internals/#hsts
这是Chrome用来管理你的浏览器的本地HSTS设置的UI。
- 首先,为了确认Chrome记录了域名的HSTS设置,请在页面底部的查询域名部分输入主机名。点击查询。如果查询框返回已找到,且同时设置信息列举在了下面,那么域名的HSTS设置就保存在了你的浏览器中。
请注意,这是一个非常敏感的搜索。请只输入主机名,比如www.example.com或example.com,不要输入任何相关的协议或路径。
- 在删除域名部分中输入相同的主机名并点击
你的浏览器将不再强迫这个网站进行HTTPS连接!你可以通过刷新或导航到页面来测试它是否能够正常工作。
请注意,根据网站所提供的HSTS设置,你可能需要指定恰当的子域名。例如,staging.yoursite.com的HSTS设置可能需要与yoursite.com区分开来,因此视情况而定,你可能需要重复这些步骤。
如何删除Firefox中的HSTS设置:
我们将讲述两种不同的删除Firefox中的HSTS设置的方式。第一种方式应当可以适用于大多数情况——但如果有需要,我们也包括了一个手动选项。
- 关闭Firefox中所有打开的标签。
- 利用键盘快捷键Ctrl + Shift + H(Mac上为Cmd + Shift + H)打开完整的历史窗口。在以下步骤中,你必须使用到这一窗口或侧边栏。
- 找到你想要为之删除HSTS设置的网站——如果需要,你可以在右上角搜索该网站。
- 从项目列表中右键点击该网站,并点击忘记这个网站。这将会清除这个域名的HSTS设置(以及其他缓存数据)。
- 重启Firefox并访问该网站。你现在应当能够通过HTTP/中断的HTTPS访问这一网站了。如果这些说明行不通,那么你可以尝试以下手动方式:
针对Firefox的手动方式
如果上述步骤行不通,你可以尝试以下方式。
首先,通过你的操作系统的文件资源管理器来定位你的Firefox配置文件。你可以通过导航到about:support来找到Firefox的这一文件夹。
向下滚动到页面中部,在应用程序基本要素部分,你将看到配置文件夹。点击打开文件夹。
现在关闭Firefox,因此浏览器便不会覆盖我们将要进行修改的任何设置。
在你的配置文件夹中,找到并打开文件SiteSecurityServiceState.txt。该文件包含了你之前访问的域名的HSTS和HPKP(Key Pinning,一种独立的HTTPS机制)缓存设置。这些设置可能会有点杂乱无章。
搜索你想要为之清除HSTS设置的域名,并将它从文件中删除。每个条目都有域名。删除从想要的域名开始到下一个列出的域名中的所有的条目。还有一种方法,你可以将现有文件从a .txt重命名为a .bak(为了保存现有的文件,以防万一)并允许Firefox在下次启动时创建一个全新的文件。
以下是一个简单的HSTS列表示例。
www.thesslstore.com:HSTS 0 17312 1527362896190,1,0
正如前面所提到的,这一文件的格式可能会很混乱。以下是我的配置中的一个示例。每个域名的设置都以独特的颜色显示了出来,以清楚地区分开来。在这种情况下,之前域名的部分设置在开头会显示为红色:
怎么在Chrome和Firefox浏览器中清除HSTS设置?的更多相关文章
- chrome和Firefox浏览器渲染页面的不同
一直很好奇chrome和firefox这两大浏览器的页面渲染有什么不同,今天自己写了些html代码来做了下检验. 先做html编码,代码如下: <!DOCTYPE html><htm ...
- firefox浏览器中silverlight无法输入问题
firefox浏览器中silverlight无法输入问题 今天用firefox浏览silverlight网页,想在文本框中输入内容,却没想到silverlight插件意外崩溃了.google一下,发现 ...
- JavaScript在IE浏览器和Firefox浏览器中的差异总结
JavaScript在IE浏览器和Firefox浏览器中存在一些差异,以下对这些差异部分进行了总结,以及解决方案: 1.HTML对象的 id 作为对象名的问题 IE:HTML 对象的 ID 可以作为 ...
- firefox浏览器中 bootstrap 静态弹出框中select下拉框不能弹出(解决方案)
问题出现场景1: 在firefox浏览器中在bootstrap弹出的modal静态框中再次弹出一个静态框时 select下拉框不能弹出选项 解决方案:去掉最外层静态框的 tabindex=" ...
- Chrome和Firefox浏览器执行new Date() 函数传参数得到不同结果的陷阱
某日,同事问到关于new Date() 函数传参数,在火狐浏览器和谷歌浏览器控制台运行,会得到不同的结果,刚开始觉得不可能,后来实际操作才发现此陷阱 var date = new Date('2014 ...
- Chrome和Firefox浏览器调试对比
最近的项目中使用Extjs5, 其中主要的一个特点就是js文件的动态加载,之前使用Firefox浏览器对js文件进行调试,打断点时,只对当次调试有效,刷新之后,由于动态加载的js文件(文件名后面加了一 ...
- javascript 禁止页面选取-兼容IE、Chrome和firefox浏览器
在做到一个页面需要禁止网页内容被选取的时候,碰到浏览器兼容的问题,解决方法如下 1.单独使用适用于IE.Chrome浏览器,主要是在head的<script>标签里面加上如下代码 docu ...
- IE, Chrome和Firefox浏览器 差异对比
最近的项目中使用Extjs5.6, 其中主要的一个特点就是js文件的动态加载,之前使用Firefox浏览器对js文件进行调试,打断点时,只对当次调试有效,刷新之后,由于动态加载的js文件(文件名后面加 ...
- 爬虫工具fiddle在firefox浏览器中的使用
1.fiddle工作原理 浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,默认通过自己发送HTTP(或HTTPS)请求到服务器. 使用Fiddler之后,浏览器像目标服务器发送的请求都会经 ...
随机推荐
- 浅谈Java参数传递机制
Java参数传递 才疏学浅,今天才知道Java中方法的参数是可以传递对象引用进去的. Java的参数传递机制很简单,其实就是值传递. 所谓值传递,也就是我们在给方法传递一个参数的时,传递的 ...
- redis 安装and对外开放端口
第一步: $ cd /usr/local/src $ wget http://download.redis.io/releases/redis-5.0.4.tar.gz $ tar xzf redis ...
- Linux网络安全篇,进入SELinux的世界(四)
SELinux的策略与规则管理set 1.安装SELInux工具 yum install setools-console 2.基本的命令 seinfo [-Atrub] -A ===> 列出SE ...
- mybatis源码分析--如何加载配置及初始化
简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository ...
- 响应式web设计(Responsive web design)
在全面进入互联网时代后,随着各种移动设备的普及,移动互联网更加受到大众的青睐.由于移动互联网的使用量远远超出了传统互联网的使用量,移动设备也正在逐渐超越桌面设备.因为用户在移动设备上的使用习惯不同,U ...
- Mycat使用配置实践
本来写了好多,关于配置的解释和使用以及注意,但是发现有点啰嗦含金量也不高,所以直接把实际使用的一个例子放着吧,供参考. <!DOCTYPE mycat:schema SYSTEM "s ...
- Linux学习6-安装Python3.6
前言 今天我们来学习一下如何在Linux环境下安装Python3.6吧! 一:下载Python3.6(我下载的是python3.6.8) 地址:https://www.python.org/downl ...
- Delphi Unicode转中文
function UniCode2GB(S : String):String;Var I: Integer;beginI := Length(S);while I >=4 do begintry ...
- 💕《给产品经理讲JVM》:垃圾收集器
前言 在上篇中,我们把 JVM 中的垃圾收集算法有了一个大概的了解,又是一个阴雨连绵的周末,宅在家里的我们又开始了新一轮的学习: 产品大大:上周末我们说了垃圾收集算法,下面是不是要讲一下这些算法的应用 ...
- redis: Set集合类型(五)
Set里面的值是不能重复的 Set设置值(头部):sadd myset hello Set获取值:smembers myset 检查Set是否包含某个元素:sismember myset hello ...