Nginx配置HSTS

定义

  • HSTS(HTTP Strict Transport Security) 即HTTP严格传输安全 它是一套由互联网工程任务组发布的互联网安全策略机制

作用

  • 抵御SSL剥离攻击: 攻击前提是用户很少直接在地址栏输入https:// 用户总是通过点击链接或3xx重定向从HTTP页面进入HTTPS页面

  • 强制浏览器使用HTTPS与服务器建立连接 只要浏览器曾经与服务器建立过一次安全连接

原理

  • 当浏览器通过HTTPS发出请求时 在服务器返回的响应头中包含Strict-Transport-Security字段
1
2
3
max-age 浏览器有效期

includeSubDomains 是否包含子域名
  • Nginx配置HSTS
1
2
3
4
5
6
7
8
9
server {
listen 443 ssl;
server_name domain.com;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

location / {
}
}

缺陷

  • 用户首次访问某网站是不受HSTS保护的 因为浏览器还未收到HSTS 所以仍有可能通过明文HTTP来访问

  • 解决办法: 浏览器预置HSTS域名列表 https://hstspreload.org/

参考