HTTP Strict Transport Security (通常简称为HSTS) 是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式。
HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。服务器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议响应头中包含Strict-Transport-Security字段。非加密传输时设置的HSTS字段无效。
前提要求:已安装https。
在对应站点配置文件conf的ssl段(443字眼)内的server{}模块中,增加以下参数
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
注意:Strict-Transport-Security中的max-age的时间值不能小于15552000
完成后重启NGINX生效。
在对应站点.conf的 <VirtualHost :443>段内,增加以下内容
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
完成后重启APACHE生效。
用户首次访问某网站是不受HSTS保护。这是因为首次访问时,浏览器还未收到HSTS,所以仍有可能通过明文HTTP来访问。
方法一:使用curl命令来测试查看结果,看是否存在Strict-Transport-Security的字段,若有则表示成功。
$ curl -I https://wiki.diahosting.com HTTP/1.1 200 OK Server: nginx Date: Sat, 11 May 2018 13:52:19 GMT Content-Type: text/html; charset=utf-8 ... Strict-Transport-Security: max-age=63072000; includeSubDomains; preload X-Frame-Options: deny X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff ...
方法二:使用CHROME或FIREFOX浏览器,检查网站首页的header,看是否有Strict-Transport-Security字段。
通常来说,使用了HSTS协议后,原HTTPS的评级会增高,意味着更加安全。附以下SSL证书评级方法。
https://www.ssllabs.com/ssltest/analyze.html