注意事项

两种方法的原版文件权限均为644ownerroot,因此修改原文件需要root账户权限

强烈建议修改文件前事先备份原文件,以免因胡乱修改造成WebStation崩溃

问题描述

通过群晖建站时,在WebStation虚拟主机设置中为了实现HSTS,已勾选HSTS按钮。但原版WebStation设置中HSTS的Header并不符合加入到HSTS preload list中的要求,主要表现为:

  1. Headermax-age15768000,不足一年
  2. Header中没有includeSubDomainspreload

因此考虑修改WebStation中关于HSTS的模板文件以满足加入HSTS preload list的要求。

修改WebStation中HSTS模板文件

通过不断摸索,找到了WebStation中控制HSTS选项的模板文件,路径为/volume1/@appstore/WebStation/misc/SSLProfile.mustache,可以通过Winscp或者Putty修改该文件,将原文件中的

{{#SSLProfile.hsts}}add_header  Strict-Transport-Security max-age=15768000;{{/SSLProfile.hsts}}

修改为

{{#SSLProfile.hsts}}add_header  Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";{{/SSLProfile.hsts}}

其中max-age必须至少为31536000,即一年时间

修改后保存文件,进入WebStation的虚拟主机界面,重新启用HSTS即可。如果之前HSTS已经勾选,需要取消勾选,保存后再次勾选启用。

验证是否成功修改HSTS

启用HSTS后,进入搭建好的网站,浏览器按F12进入开发者模式,进入NetworkCtrl+F5清除浏览器缓存刷新,选中ALL中的任意元素,在Headers中的Response Headers中如果发现Strict-Transport-Security: max-age=63072000; includeSubDomains; preload字样,则说明修改成功。

如果按照上述步骤配置失败,可以尝试在完成上述步骤后,在群晖软件中心先停用正在运行的WebStation,然后再重新启动,再验证是否修改成功

其他方式探索

建站时群晖后端选择的是Apache 2.4,因此在这里仅以Apache 2.4为例,Nginx可查看网上其他教程。修改群晖Apache 2.4的配置文件也可以改变header中HSTS的内容。

严格意义上并不推荐此方法,因为会影响所有以Apache 2.4为后端的WebStation虚拟主机,而以Nginx其他Apache版本为后端的虚拟主机仍然不受影响,还会继续维持原来的状态

若通过此方法修改,则WebStation设置虚拟主机时,必须取消勾选HSTS,以防止Header中出现2个HSTS报文

修改群晖Apache 2.4配置文件

经过探索,发现群晖Apache 2.4配置文件的路径为/volume1/@appstore/Apache2.4/usr/local/etc/apache24/conf/httpd24.conf,通过Winscp或者Putty找到其中的

……
<IfModule unixd_module>
    User http
    Group http
</IfModule>

ErrorLog /run/apache24-error_log
TraceEnable off
LogLevel error
……

在这段后加入

#HSTS
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>

其中max-age必须至少为31536000,即一年时间

加入后整体效果为

……
<IfModule unixd_module>
    User http
    Group http
</IfModule>

ErrorLog /run/apache24-error_log
TraceEnable off
LogLevel error

#HSTS
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
……

确认无误后保存。之后可以在软件中心重启Apache 2.4,或者通过Putty执行synoservice --restart pkgctl-Apache2.4命令重启Apache 2.4,然后按前文所述的方法检查是否成功修改HSTS。


版权属于:Edward Kong

本文链接:https://kong.ink:666/archives/Modify-https-Header-for-HSTS-in-Synology-WebStation

转载时请注明出处及本文链接

最后修改:2020 年 02 月 24 日 07 : 28 PM
如果觉得我的文章对你有用,请随意赞赏