HSTS(HTTP Strict Transport Security)国际互联网工程组织 IETF 正在推行一种新的 Web 安全协议,网站可以选择使用 HSTS 策略,来让浏览器强制使用 HTTPS 与网站进行通信,以减少会话劫持风险。
采用HSTS 协议的网站将保证浏览器始终连接到该网站的 HTTPS 加密版本,不需要用户手动在 URL 地址栏中输入加密地址。该协议将帮助网站采用全局加密,用户看到的就是该网站的安全版本。HSTS 的作用是强制客户端(如浏览器)使用 HTTPS 与服务器创建连接。
服务器开启 HSTS 的方法是,当客户端通过 HTTPS 发出请求时,在服务器返回的超文本传输协议响应头中包含 Strict-Transport-Security 字段。非加密传输时设置的 HSTS 字段无效。
比如,https://www.williamlong.info 的响应头含有 Strict-Transport-Security: max-age=31536000; includeSubDomains。这意味着两点:在接下来的一年(即 31536000 秒)中,浏览器只要向 www.williamlong.info 或其子域名发送 HTTP 请求时,必须采用 HTTPS 来发起连接。比如,用户点击超链接或在地址栏输入 http 网址 ,浏览器应当自动将 http 转写成 https 网址。
对于 nginx 服务器,只要在添加 Strict-Transport-Security 这个 HTTP 头部信息即可。
add_header Strict-Transport-Security “max-age=31536000”;
但有一点需要注意,Strict-Transport-Security 中的 max-age 的时间不能小于 15552000。
对于 Windows server 服务器,打开网站目录下的 web.config 这个文件,在相应的位置添加上针对 https 响应的 url 重写规则(黑体部分),并保存。
<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name=”redirect to HTTPS” enabled=”true” stopProcessing=”true”>
<match url=”(.*)” />
<conditions>
<add input=”{HTTPS}” pattern=”^OFF$” />
</conditions>
<action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}”
redirectType=”Permanent” />
</rule>
</rules>
<outboundRules>
<rule name=”Add Strict-Transport-Security when HTTPS” enabled=”true”>
<match serverVariable=”RESPONSE_Strict_Transport_Security”
pattern=”.*” />
<conditions>
<add input=”{HTTPS}” pattern=”on” ignoreCase=”true” />
</conditions>
<action type=”Rewrite” value=”max-age=31536000″ />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
开启了 HSTS 后,你部署 SSL/TLS 的服务检测得分就可能是 A+以上了。这时候就可以加入 HSTS Preload List。
HSTS preload list 是 Chrome 浏览器中的 HSTS 预载入列表,在该列表中的网站,使用 Chrome 浏览器访问时,会自动转换成 HTTPS。Firefox、Safari、Edge 浏览器也在采用这个列表。
进入hstspreload 官网,输入你的域名,然后检测结果会告诉是否符合加入 HSTS Preload List,没有问题的话勾选确定。
当然,加入到了 HSTS Preload List 后,你可能还需要等待 1-2 月,待新版本的 Chrome 和 Chromium、Firefox、IE 等发布后,你的域名算是正式被各大浏览器承认并强制使用 Https 访问了。
本文为原创文章,版权归主机之家测评所有,欢迎分享本文,转载请保留出处!