阿里云限量代金券 | 此广告位出租25元/月 |
Netcraft 公司最近公布了他们检测SSL/TLS网站的研究,并指出只有仅仅5%的用户正确执行了HTTP严格传输安全HSTS。本文介绍nginx如何配置HSTS。
什么是HSTS
HTTPS(SSL和TLS)确保用户和网站通讯过程中安全,使攻击者难于拦截、修改和假冒。当用户手动输入域名或http://链接,该网站的第一个请求是未加密的,使用普通的http。最安全的网站立即发送回一个重定向使用户引向到https连接,然而,中间人攻击者可能会攻击拦截初始的http请求,从而控制用户后续的回话。
自然而然HSTS应运而生为了解决这一潜在的安全问题。即时用户输入域名或http连接,浏览器将严格的升级到https连接。
HSTS如何工作的
HSTS策略是从安全的HTTPS站点发送的HTTP响应头部发布的。
Strict-Transport-Security: max-age=63072000
当浏览器从HTTPS站点看到这个头部,就知道该域名只能通过HTTPS(SSL 或者 TLS)访问了。并将此信息缓存到63072000,也就是2年。
可选的参数includeSubDomains告诉浏览器该策略适用于当前域下的所有子域。
Strict-Transport-Security: max-age=63072000; includeSubDomains
nginx配置HSTS
在nginx配置文件上设置HSTS响应头部。下面是我的配置文件,红色字体是我配置的HSTS响应头部。
server {
listen 80;
server_name diannaobos.com www.diannaobos.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
server
{
listen 443;
#listen [::]:80;
ssl on;
server_name www.diannaobos.com diannaobos.com;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.diannaobos.com;
ssl_certificate /usr/local/nginx/ssl/214045388450580.pem;
ssl_certificate_key /usr/local/nginx/ssl/214045388450580.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
include diannaobos.conf;
#error_page 404 /404.html;
include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/www.diannaobos.com.log;
}
测试HTTP严格传输安全:
一旦用户提出HSTS策略,它的缓存信息期由max-age指定。在此期间,浏览器将会拒绝通过未加密的HTTP访问web服务,并拒绝给予例外证书错误(如果该网站以前提交了一个有效可信的证书)。如果指定了一个includeSubDomanis参数,这些限制也同样适用于当前域下的所有子域。
测试网站的SSL安全等级: 进入https://www.ssllabs.com/ssltest/,输入你的网站域名就可以给你的网站做一次全面的SSL检查。
加强HSTS
保护客户端从HTTP拦截,从它看到STS头部到声明的max-age的期间内。然而,HSTS并不是HTTP回话劫持的完美解决方案。用户仍然容易受到攻击,如果他们通过HTTP访问HSTS保护的网站时:
1、以前从未访问过该网站
2、最近重新安装了其操作系统
3、最近重新安装了其浏览器
4、切换到新的浏览器
5、切换到一个新的设备如移动电话
6、删除浏览器的缓存
7、最近没访问过该站并且max-age过期了
为了解决这个问题,google坚持维护了一个“HSTS preload list”的站点域名和子域名,并通过https://hstspreload.org提交其域名。该域名列表被分发和硬编码到主流的web浏览器。客户端访问此列表中的域名将主动的使用HTTPS,并拒绝使用HTTP访问该站点。
一旦设置了STS头部或者提交了你的域名到HSTS预加载列表,这是不可能将其删除的。这是一个单向的决定使你的域名通过HTTPS可用的。
参考链接:http://www.linuxprobe.com/billion-web-error-tolerant
https://www.landiannews.com/archives/32574.html
推荐您阅读更多有关于“”的文章
Powered By Z-Blogphp
分享:
支付宝
微信