如何禁用HTTP严格传输安全?

我有一个与config.force_ssl = true的Rails应用程序,但现在我不想要SSLencryption,但我的应用程序仍然redirect到https。 我读到这是Apache上的HTTP严格传输安全问题。 我怎样才能禁用它?

这不是Apache的问题,但事实上,Rails发送一个HSTS头。

在Chrome中,您可以通过进入about:net-internals来清除HSTS状态,如在ImperialViolet:Chrome中的HSTS UI中所述 。 您可能还必须清除caching,因为config.force_ssl = true也使用301(永久)redirect。

另外,根据这个答案 ,你也可以让你的应用程序发送一个max-age = 0的STS头。 在你的控制器中:

 response.headers["Strict-Transport-Security"] = 'max-age=0' 

只是想指出@布鲁诺的答案和@ JoeVanDyk的build议是真实的,可以超越Rails / Apache的上下文应用。 我正在使用PHP和Nginx。 在我的情况下,PHP与它没有任何关系,但是这是Nginx的步骤:

 //sorry here's the nginx.conf part first, can't figure out how to mix multi-line //code with an ordered list server { #... #change: # add_header Strict-Transport-Security "max-age=315360000; includeSubdomains"; #to: add_header Strict-Transport-Security "max-age=0;"; #... } 
  1. 清除你的“浏览器历史”。 为了澄清@ JoeVanDyk的build议,我认为你需要清除“浏览历史logging”,因为清除caching不适用于我(在Chrome / Firefox上testing,请添加评论,如果你知道更多)。

  2. nginx.conf文件(见上面的代码)

  3. 重启服务器

    root@ip-xxx-xxx-xxx:~# /etc/init.d/nginx restart

在这之后,你可以将nginx的add_header Strict..命令恢复到你以前的状态。 只要确保你重复步骤1-3。

graphicsID提供了一点思考。 将caching时间设置为0是最好的select,如果将其closures,则需要将其保留为0几周以清除客户端浏览器。 如果您只需要清除chrome中的HSTS(对于您自己的浏览器),则可以在地址栏中使用chrome://net-internals/#hsts ,以便在特定浏览器中清除您网站的caching。 结合下面的“门道”,它变得有用。

您可以通过设置/欺骗自定义标题=>键来设置临时HSTS模式。 基本上,如果一个特殊的请求头存在,并且它匹配一个键,设置HSTS与任何你需要的caching时间。 这将允许您打开或closures所有stream量的HSTS,但你。 用于在全局启用之前尝试使用HSTS(以确保所有资产正在加载)。 如果您想暂时清除客户端caching而修复某些内容(为您留下testing空间),这也非常有用。

我发现我无法删除Chrome中的HSTS条目,因为我正在使用IP地址进行开发。 我似乎无法得到chrome://net-internals/#hsts删除条目。 我发现Chrome存储了../AppData/local/Google/Chrome/User Data / Default / TransportSecurity中的条目,所以我刚刚删除了该文件。 当然,它将删除所有HSTS请求,但是我怀疑它们将会随着时间的推移而重build。