Apache启用HSTS

什么是HSTS?

国际互联网工程组织 IETE 正在推行一种新的 Web安全协议HTTP Strict Transport Security(HSTS)。采用 HSTS 协议的网站将保证浏览器始终连接到该网站的 HTTPS 加密版本,不需要用户手动在 URL 地址栏中输入加密地址。该协议将帮助网站采用全局加密,用户看到的就是该网站的安全版本。

HSTS 的作用是强制客户端(如浏览器)使用 HTTPS 与服务器创建连接。服务器开启 HSTS 的方法是,当客户端通过 HTTPS 发出请求时,在服务器返回的超文本传输协议响应头中包含 Strict-Transport-Security 字段。非加密传输时设置的 HSTS 字段无效。

强制整站进行https访问,避免的使用跳转时可能被劫持的风险。

部署HSTS

下面介绍常用的Apache和Nginx部署情况:

Apache上启用HSTS

开启HSTS需要先用headers模块

sudo ln -s /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled

修改default-ssl.conf配置文件,添加

Header always set Strict-Transport-Security "max-age=15768000; includeSubdomains; preload"

Nginx上启用HSTS

server {
   listen 443 ssl;
   server_name www.xxx.com;
   add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
...
}

server {
   listen 80;
   server_name www.xxx.com;
   return 301 https://www.xxx.com$request_uri;
...
}

Strict-Transport-Security是Header字段名,max-age代表HSTS在客户端的生效时间,单位:秒。 includeSubdomains表示对所有子域名生效。preload是使用浏览器内置的域名列表。

开启 HSTS 后网站安全系数检测测评

开启 HSTS 以后,可以到 ssllabs 进行测试,网站的安全等级会进一步提升。

SSL Labs

开启前安全等级A: 开启前安全等级A

开启后安全等级A+: 开启后等级变为A+

本文作者:肖云

本文链接:http://www.d7dd.com/2019/4/apache-hsts

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0许可协议。转载请注明出处!

mysqld_safe启动MySQL
0 条评论
已登录,注销 取消