能否普遍实施严格的运输安全



我想阻止用户使用http访问我的网站。相反,我想强制使用https。

通常,我的网站托管在供应商那里,他们只需勾选";强制https"。

在这种情况下,我有自己的Ubuntu(nginx(服务器。

我想知道我是否也可以在服务器范围内强制执行https,或者我是否必须在HSTS标头中使用预加载标志?

有人能给我指一份描述如何用我的配置解决这个问题的文档吗?

谢谢!

通常需要两个server块,其中在纯HTTP端口上侦听的块将所有请求重定向到HTTPS:

server {
listen               80;
server_name          example.com;
return               301 https://example.com$request_uri;
}
server {
listen               443 ssl;
server_name          example.com;
ssl_certificate      /path/to/certificate;
ssl_certificate_key  /path/to/privatekey;
add_header           Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
# all the other configuration
}

如果您还需要将所有非www域名请求重定向到www one(反之亦然(,请检查此答案。

@IvanShatsky的回答展示了如何在Nginx中实现HSTS(我相信这正是您所需要的(。

只是为了给答案添加一些上下文:

  • 您希望同时拥有两个HTTP→HTTPS重定向和HSTS标头
  • 为了防止所有易受攻击的情况,您希望HSTS标头包含preload属性(除非您的TLD已启用HSTS,如.dev.app(
  • 为了将域添加到预加载列表中,您仍然需要在https://hstspreload.org.

由于启用preload几乎是一张单程票,安全推出计划看起来像这样:

这个想法是从小处着手,逐渐增加有效期和入选标准。

  • 查找您拥有的所有子域(请参阅DNS CNAME条目(。这些可能由您的服务器或第三方服务提供服务
  • 确保根域和所有子域都可以通过SSL/TLS(可通过HTTPS访问(提供流量服务
  • 确保HTTP→HTTPS重定向已配置
  • 设置小的过期时间,例如最大使用年限=600(10分钟(,确保所有系统都可运行
  • Add includeSubDomains指令
  • 对最大年龄进行增量更改。目标是2年的价值
  • 添加预加载指令并将域提交到HSTS预加载列表

HTTP严格传输安全性(HSTS(的终极指南。

相关内容

  • 没有找到相关文章

最新更新