你好,
我正在使用标准安装。
这是我在 app.yml 中修改的内容:
hooks:
## 为非 www 和 www 域名添加 Let's Encrypt 证书
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d example.com -d www.example.com --keylength"
你的 Discourse 的主机名是:www.example.com
到目前为止,设置工作正常,并且证书已为 example.com 和 www.example.com 提供。
但是,当我使用 SSLLabs 检查 SSL 参数时,www.example.com 域缺少 HSTS 标头。对于 example.com,它是有效的:
严格传输安全 (HSTS) 是
max-age=31536000; includeSubdomains; preload
而 Hardenize (www.hardenize.com) 的说法如下:
从 HTTP 重定向到 HTTPS 而不是同一个主机
当使用 HSTS 时,明文端口应重定向到同一主机的 HTTPS 变体。此方法可确保在该主机名上启用 HSTS,即使以后客户端被发送到其他地方。重定向到另一个主机仅在它是已启用 includeSubDomains 的父主机时才是安全的,但这里不是这种情况。
起点:
http://example.de当前重定向:
https://www.example.com预期重定向:
https://example.com
策略未预加载
当主机名被预加载时,意味着浏览器会嵌入你的 HSTS 策略,即使是发送到你网站的第一个请求也会应用该策略。此服务器在其策略中指示预加载,但域名实际上并未预加载。我们将此归类为警告,因为将“preload”关键字放在策略中,而基础结构尚未准备好进行预加载,这是一个常见问题。这很危险,因为在这种情况下,任何人都可以通过访问
hstspreload.org来提交此域名进行预加载。我们建议你自行预加载此域名(如果已准备好),或者在基础结构准备好之前从策略中删除预加载指示符。
关于为什么 HSTS 标头未为 www.example.com 域设置,有什么想法吗?