3 Star 4 Fork 1

freessl / https-start

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
Clone or download
HSTS.md 3.30 KB
Copy Edit Web IDE Raw Blame History
Drixn authored 2018-08-14 17:27 . 添加HSTS配制方法

网站如何启用HSTS

第一步

Nginx 配置

在网站配置文件的 server 块儿中添加下面一行

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

max-age 单位:秒 用来告诉浏览器在指定时间内,网站必须通过 HTTPS 协议来访问。也就是对于这个网站的 HTTP 地址,浏览器需要先在本地替换为 HTTPS 之后再发送请求。 includeSubDomains 可选参数,指定这个参数,表明这个网站所有子域名也必须通过 HTTPS 协议来访问。 preload 可选参数

然后输入命令重启 Nginx

service nginx restart

Apache2 配置

# Optionally load the headers module:
LoadModule headers_module modules/mod_headers.so
 
<VirtualHost 0.0.0.0:443>
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>

HTTP 重定向 HTTPS

<VirtualHost *:80>
  [...]
  ServerName example.com
  Redirect permanent / https://example.com/
</VirtualHost>

仅做重定向

<VirtualHost *:80>
  [...]
  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  </IfModule>
</VirtualHost>

重启 Apache2

Lighttpd 配置

server.modules += ( "mod_setenv" )
$HTTP["scheme"] == "https" {
    setenv.add-response-header  = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains; preload")
}

重启 Lighttpd

第二步

提交 Preload List

HSTS Preload List

可以看到 HSTS 可以很好的解决 HTTPS 降级攻击,但是对于 HSTS 生效前的首次 HTTP 请求,依然无法避免被劫持。浏览器厂商们为了解决这个问题,提出了 HSTS Preload List 方案:内置一份可以定期更新的列表,对于列表中的域名,即使用户之前没有访问过,也会使用 HTTPS 协议。 目前这个 Preload List 由 Google Chrome 维护,Chrome、Firefox、Safari、IE 11 和 Microsoft Edge 都在使用。如果要想把自己的域名加进这个列表,首先需要满足以下条件:

  • 拥有合法的证书(如果使用 SHA-1 证书,过期时间必须早于 2016 年)
  • 将所有 HTTP 流量重定向到 HTTPS
  • 确保所有子域名都启用了 HTTPS
  • 输出 HSTS 响应头
    • max-age 不能低于 18 周(10886400 秒);
    • 必须指定 includeSubdomains 参数;
    • 必须指定 preload 参数;

点击提交【可能需要搭梯子】

第一步

example.com 处输入域名点击 Check status and eligibility 图1

第二步

第一步点击后,如果没什么意外情况,就会出现下图,然后将 Submit 下的两个选框打钩,点击 Submit yourdomain.com to the HSTS preload list 图2

第三步

第二步提交后会提示成功字样,如下图所示 图1

第四步

再次查询就会提示域名正在提交中... 图1

审核通过后,你的域名就会跟随此列表被推送到新版本的 Chrome, Firefox/Mozilla 和 Safari 浏览器中,从而实现更安全的HTTPS预加载。

Comment ( 0 )

Sign in for post a comment

1
https://gitee.com/freessl/https-start.git
git@gitee.com:freessl/https-start.git
freessl
https-start
https-start
master

Search

103611 48b8ff67 1899542 103622 4d02230c 1899542