群晖WebStation中HSTS选项HTTPS Header修改
注意事项
[scode type="info"]两种方法的原版文件权限均为644
,owner
为root
,因此修改原文件需要root
账户权限[/scode]
[scode type="yellow"]强烈建议修改文件前事先备份原文件,以免因胡乱修改造成WebStation崩溃[/scode]
问题描述
通过群晖建站时,在WebStation虚拟主机设置中为了实现HSTS,已勾选HSTS按钮。但原版WebStation设置中HSTS的Header
并不符合加入到HSTS preload list中的要求,主要表现为:
Header
中max-age
为15768000
,不足一年Header
中没有includeSubDomains
和preload
因此考虑修改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}}
[scode type="yellow"]其中max-age
必须至少为31536000
,即一年时间[/scode]
修改后保存文件,进入WebStation的虚拟主机
界面,重新启用HSTS即可。如果之前HSTS已经勾选,需要取消勾选,保存后再次勾选启用。
验证是否成功修改HSTS
启用HSTS后,进入搭建好的网站,浏览器按F12
进入开发者模式,进入Network
,Ctrl+F5
清除浏览器缓存刷新,选中ALL
中的任意元素,在Headers
中的Response Headers
中如果发现Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
字样,则说明修改成功。
[scode type="yellow"]如果按照上述步骤配置失败,可以尝试在完成上述步骤后,在群晖软件中心先停用正在运行的WebStation,然后再重新启动,再验证是否修改成功[/scode]
其他方式探索
建站时群晖后端选择的是Apache 2.4
,因此在这里仅以Apache 2.4
为例,Nginx
可查看网上其他教程。修改群晖Apache 2.4
的配置文件也可以改变header中HSTS的内容。
[scode type="yellow"]严格意义上并不推荐此方法,因为会影响所有以Apache 2.4
为后端的WebStation虚拟主机,而以Nginx
和其他Apache版本
为后端的虚拟主机仍然不受影响,还会继续维持原来的状态[/scode]
[scode type="red"]若通过此方法修改,则WebStation设置虚拟主机时,必须取消勾选HSTS,以防止Header
中出现2个HSTS报文[/scode]
修改群晖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>
[scode type="yellow"]其中max-age必须至少为31536000,即一年时间[/scode]
加入后整体效果为
……
<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。
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »