跳到主要内容

实践TLS

TLS在实践过程中需要考虑的点有很多,简单的描述。

HTTP网站如何升级到HTTPS网站

一个方式是301(客户端)重定向。但是会多一次网络开销。

另外一个方式是 HTTP Strict Transport Security。HSTS 需要客户端配合。方式是服务端在 HTTPS的响应中加上 Strict-Transport-Security 头部,客户端解析后来定义自己的逻辑。它其实是客户端重定向。

举例说明:

  1. 客户端 访问 http://www.example.com
  2. 服务端返回了 301 重定向到 https://www.example.com
  3. 客户端 访问 https://www.example.com
  4. 服务端返回并携带了如下头:Strict-Transport-Security: max-age=1; includeSubDomains; preload

以后的 max-age = 1秒 的时间内,客户端访问 http://www.example.com 和其子域时(includeSubDomains) 时(包括里面里面的混合内容,比如js),都应该遵循 HSTS的协议,自行重定向到 https网站

preload 含义

为了解决第一次访问时因为客户端不知道网站是否支持HTTPS必须有一次http访问的问题。使用 HSTS 的预加载功能,预加载可以将指定域名添加到 Preload List 名单中,添加到 Preload List 名单后,浏览器就只能通过 HTTPS 方法来进行访问,从而杜绝 HTTP 访问时被这类攻击的可能。

可以通过访问https://hstspreload.org/ 提交域名申请。但需要注意的是,添加后的域名将会硬编码到浏览器内。(感觉Header里面的 preload没什么用)


参考: (RFC HSTS)[https://datatracker.ietf.org/doc/html/rfc6797]