对于百度仅找到 Apache,Nginx,Lighttpd 添加 HSTS 头表示各种不爽,于是我在这里收集了各种添加 HSTS 头的正常方法&奇葩方法,直接找到对应的即可。
Apache
编辑你的 apache 配置文件编辑你的 apache 配置文件(/etc/httpd/conf/httpd.conf)。
首先加载 mod_header 库。
LoadModule headers_module modules/mod_headers.so
然后对应站点 VirtualHost 里面插入 HSTS 响应头信息。
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
别忘了保存 Apache 配置文件,然后重启。
Nginx
编辑 Nginx 配置文件(/usr/local/etc/nginx/nginx.conf)。
将以下代码添加到 server 块。
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
如果不行可以试试直接插入到 location ~ *php 内。
location ~ [^/]\.php(/|$) {
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
}
记得保存配置文件,然后重启。
Lighttpd
将下述配置增加到你的 Lighttpd 配置文件(/etc/lighttpd/lighttpd.conf),没试过不知道什么情况。
server.modules += ( "mod_setenv" ) $HTTP["scheme"] == "https" { setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains; preload") }
一样要记得保存配置文件,然后重启。
IIS
一样没试过,请另行研究。
此模块只支持 IIS7 及以上版本,IIS6 看下面 ASP.NET 怎么加就怎么加吧。
但是加载该模块前最好先设置好强制 HTTPS 跳转规则。
HSTS-IIS 模块下载地址:https://github.com/FWest98/hsts-iis-module/releases
安装:https://github.com/FWest98/hsts-iis-module/blob/develop/documentation/Installation.md
Tomcat
编辑 web.xml 文件(tomcat/conf/web.xml)
找到以下几行,去掉注释。
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<async-supported>true</async-supported>
</filter>
在后面添加以下几行:
<init-param>
<param-name>hstsMaxAgeSeconds</param-name>
<param-value>63072000</param-value>
</init-param>
最后找到以下几行,去掉注释。
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
仍然要记得保存,然后重启。
PHP
PHP 最简单了,将以下代码添加到网站根目录的 index.php 即可。
header("Strict-Transport-Security: max-age=63072000; includeSubdomains; preload");
ASP.NET
如果你可以修改 web.config 文件,你可以添加以下代码(如果你已经设置了强制 HTTPS 跳转可以无视前一条规则)。
<rewrite>
<rules>
<rule stopprocessing="true" name="HTTP to HTTPS redirect">
<match url="(.*)" />
<conditions>
<add ignorecase="true" pattern="off" input="{HTTPS}" />
</conditions>
<action url="https://{HTTP_HOST}/{R:1}" redirecttype="Permanent" type="Redirect" />
</rule>
</rules>
<outboundrules>
<rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
<match pattern=".*" servervariable="RESPONSE_Strict_Transport_Security" />
<conditions>
<add ignorecase="true" pattern="on" input="{HTTPS}" />
</conditions>
<action type="Rewrite" value="max-age=63072000; includeSubDomains; preload" />
</rule>
</outboundrules>
</rewrite>
JSP
没学过 JSP,咋用自己看着办。
response.setHeader("Strict-Transport-Security", "max-age=63072000; includeSubdomains; preload");
NodeJS
使用 Helmet.js,至于咋用可以看官方文档,链接在文章末尾。
全能方案
如果你使用 CloudFlare CDN,可以通过 CloudFlare 添加 HSTS 。
1,在你的域名后台 Crypto 选项卡找到 HTTP Scrict Transport Security(HSTS)。
2,这里你需要确认网站是否启用 HTTPS,
如果开启了 HTTPS,那么可以勾选 I understand 然后点击 Next Step 。
3,对 HSTS 进行配置。
max-age 最多只能设置为 12 个月。
确认完毕点击 Save 保存即可。
参考文章
部分需 FQ
https://zhangzifan.com/http-hsts.html
https://helmetjs.github.io/docs/hsts/
http://rical.blogspot.jp/2016/10/setting-hsts-in-asp-net.html
http://www.hanselman.com/blog/HowToEnableHTTPStrictTransportSecurityHSTSInIIS7.aspx
http://stackoverflow.com/questions/27541755/add-hsts-feature-to-tomcat
Comments 4 条评论
博主 yufan
干货好多 #[真棒]
博主 LiarOnce
@yufan 对了,为什么你的博客打不开啊。
博主 yufan
@LiarOnce 我在备案 #[weiqu] 找人共享备案的 hhh
博主 泪雪
挺全面的,厉害了