[指南] 如何配置使用HTTP严格传输安全HSTS

HTTP严格传输安全即HSTS是某种安全功能,HSTS旨在告知用户使用的浏览器与服务器之间仅HTTPS通信。

如果网站服务器支持HTTP访问并将其重定向到HTTPS访问的话,那么重定向之前的初始化会话是非加密的。

这种情况下攻击者就可以利用中间人攻击手法进行劫持,让访问请求从正常站点跳转到攻击者的恶意站点去。

而HSTS协议则告知浏览器不可以使用HTTP进行连接,在浏览器上自动将所有到该站点的HTTP替换HTTPS。

维基百科上对HSTS协议的描述是可以用来抵御 SSL 剥离攻击,该攻击由Moxie在2009年黑帽大会上发表的。

这种攻击方式主要利用的就是不少用户习惯性点击 HTTP 连接而不会手动把请求的网址改成HTTPS加密连接。

因此可以在 HTTP 连接完成前对请求进行阻止,然后将连接重定向到攻击者伪造的恶意网址上即可窃取数据。

[指南] 如何配置使用HTTP严格传输安全HSTS

需要注意的是:

在浏览器首次访问网页之前并不知道服务器是否支持 HSTS 协议,因此网站需要通过HTTPS协议告知浏览器。

所以在用户的浏览器初次访问HTTPS站点时即使启用HSTS协议也不能够完全杜绝掉SSL剥离这个攻击手法的。

如何告诉浏览器支持HSTS协议:

在服务器中配置HSTS协议并在客户端发出HTTPS请求时,在HTTP响应头中包含Strict-Transport-Security。

在Nginx中设置HSTS协议:

编辑网站配置文件然后加入HSTS协议代码保存,然后重启Nginx即可开启HSTS协议。实例如下:

server { listen 443 ssl http2; #listen [::]:443 ssl http2; server_name www.landiannews.com landiannews.com; #开启HTTP严格传输安全HSTS	add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; #开启HTTP严格传输安全HSTS index index.html index.htm index.php default.html default.htm default.php; ssl on; ssl_certificate /usr/local/nginx/conf/certificate/www.landiannews.com.crt; ssl_certificate_key /usr/local/nginx/conf/certificate/www.landiannews.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; }
  #修改完成保存后重启Nginx service nginx restart

在Apache 2中设置HSTS:

在Apache里编辑网站的配置文件例如/etc/apache2/sites-enabled/website.conf等等:

# Optionally load the headers module:
LoadModule headers_module modules/mod_headers.so
<VirtualHost 67.89.123.45:443>
#开启HTTP严格传输安全HSTS
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
#开启HTTP严格传输安全HSTS
</VirtualHost>

以上内容由 LCTT 编译并发布在Linux中国,英文原文请点击这里查看。

本文来源 Linux中国,由 山外的鸭子哥 整理编辑,其版权均为 Linux中国 所有,文章内容系作者个人观点,不代表 蓝点网 对观点赞同或支持。如需转载,请注明文章来源。
2
限时免费领取正版套装:全方位PDF软件文电通PDF 5正版套装
哇哦恭喜您已成功屏蔽了蓝点网的小广告
扫码关注蓝点网微信公众号

评论:

32 条评论,访客:32 条,站长:0 条
  1. 如果
    如果发布于: 
    Firefox 52.0 Firefox 52.0 Windows 10 64位版 Windows 10 64位版

    s.haoyangmao8.com 这个就自动跳https 头疼

    • 山外的鸭子哥
      山外的鸭子哥发布于: 
      Google Chrome 57.0.2987.110 Google Chrome 57.0.2987.110 Windows 10 64位版 Windows 10 64位版

      你浏览器问题吧,,,我打开显示正常啊

      • 如果
        如果发布于: 
        Firefox 52.0 Firefox 52.0 Windows 10 64位版 Windows 10 64位版

        你那有缓存吧,我这火狐 谷歌 360等都不行

      • 如果
        如果发布于: 
        Firefox 52.0 Firefox 52.0 Windows 10 64位版 Windows 10 64位版

        手机浏览器没事 但是电脑的不行

      • 如果
        如果发布于: 
        Firefox 52.0 Firefox 52.0 Windows 10 64位版 Windows 10 64位版

        你说的显示正常因为是你第一次打开这个页面,在打开他就会 hsts加载,以后就打不开了,清除浏览器第一次都能打开

        • 山外的鸭子哥
          山外的鸭子哥发布于: 
          Google Chrome 57.0.2987.110 Google Chrome 57.0.2987.110 Windows 10 64位版 Windows 10 64位版

          没有 我特地测试了

    • 山外的鸭子哥
      山外的鸭子哥发布于: 
      Google Chrome 57.0.2987.110 Google Chrome 57.0.2987.110 Windows 10 64位版 Windows 10 64位版

      你自己电脑设置的问题 我已经再三测试 先打开https版 再改成子域名 http版 正常 没有任何跳转

  2. 如果
    如果发布于: 
    Firefox 52.0 Firefox 52.0 Windows 10 64位版 Windows 10 64位版

    难道是我301重定向闹得?所有非WWW.***.com 都跳转到HTTPS:WWW.***.com 难道是这个原因? 跟HSTS没关系么,HSTS是不是所有的都自动跳

  3. 如果
    如果发布于: 
    Firefox 52.0 Firefox 52.0 Windows 10 64位版 Windows 10 64位版

    nginx 求助怎么办啊 我在WWW域名地下输入上面那个规则,为什么其他二级会收到影响

发表评论