Proxy & Bypass HSTS

HSTS工做机制:html

        服务端配置支持HSTS后,用户访问HTTPS网站,服务器会给返回给浏览器的header头中添加一个Strict-Transport-Security字段(非加密传输时此字段无效),支持HSTS的浏览器接收到此字段,会将全部的HTTP访问请求在内部作307跳转到HTTPS,而不会产生任何网络请求(区别没有设置HSTS的网站是作302跳转将http请求转为https),而后将此网站加入到浏览器的HSTS 列表中。git

遇到的问题:github

        上面这种状况就遇到了一种尴尬的问题,当作proxy代理时,由于要抓去https传输的数据,就须要本身伪造证书进行服务器与本地交互数据的解封包,服务器设置了HSTS,此时就没法经过浏览器的验证了浏览器

        

        而没有设置HSTS的网站没有任何问题,添加到例外中便可缓存

解决问题:服务器

        方法一:火狐访问"about:config" --> 右键建立->整数->整数值:test.currentTimeOffsetSeconds ->内容:11491200 而后清除浏览器缓存 再使用代理的时候就没问题了网络

        方法二:由于HSTS的设置都有必定的时效性,能够经过修改本地时间大于一年解决(修改时间后不代理状况下有个bug,当证书过时时间小于本地修改后的时间的时候会形成不少https的资源没法加载,甚至提示证书错误没法访问)网站

        方法三:DNS方式,如MITMf (https://github.com/byt3bl33d3r/MITMf)加密

最后:3d

        方法各有优缺,针对特殊场景灵活利用,最简单的莫非改本地时间。

参考:

        https://blog.wilddog.com/?p=997    等.

       https://raymii.org/s/tutorials/HTTP_Strict_Transport_Security_for_Apache_NGINX_and_Lighttpd.html HTTP Strict Transport Security for Apache, NGINX and Lighttpd

       2017/1/16更新:https://finnwea.com/blog/bypassing-http-strict-transport-security-hsts 含两种方法,一:NTP  二:DNS欺骗劫持

相关文章
相关标签/搜索