比方说,我经营一家公司“Example Inc”,并有一个网站:
https://www.example.com
现在因为我是安全良心,我正在使用https,并希望设置HSTS头强制其使用。 我也会包括很长一段时间,比如说一年。
严格的运输安全:最大年龄= 31536000; includeSubDomains
现在,我也是一个很好的网站所有者,所以我build立了以下301redirect到以上站点:
最后一个也有HSTS头以及一个https网站。
据我所知,这是build议运行一个HTTPS网站(显然还有很多其他的设置),这将是相当普遍的。
到现在为止还挺好。
现在,在公司内部网上,而不是在互联网上,我有大量的服务器,并使用example.com域。 所以我有:
现在假设其中一些机器运行networking服务器,并不是所有的都是https。
这是不是说,如果我的任何员工碰巧访问https://example.com,那么他们的浏览器将设置HSTS标头,并将拒绝任何子域的http,所以不能再访问一些内部http-只有networking服务器?
这是怎么回事?
我是否应该通过不使用includeSubDomains设置来危害我的外部网站安全? 至less不在https://example.com网站上? 妥协内部问题的外部安全似乎是错误的。
我应该强制所有的内部应用程序都是https吗? 说起来容易做起来难。
我应该在内部使用不同的域名吗? 例如machine1.intraexample.com? 看起来浪费了一个域名,一些项目(例如电子邮件服务器)将需要在主域名上,尽pipe如果他们甚至需要运行它们,它们可能仅限于https服务器。
任何其他的想法?
此外,认为这可能会给公司带来很大的问题,可能应该在规范和其他地方更多地强调。 许多网站所有者对于非www版本没有单独的configuration,因此可能会无意中在顶级域上设置includeSubDomain标志。 只有在实施之前想到这个情景,我才避免这样做。 我会在最初(一天)设置非常低的期限来解决这些问题,这也可以更有力地build议恕我直言。 这可能很容易被错过,并可能造成很多用户的怪异问题。
编辑2015年6月这是一个真实世界的例子,使网站变得非常错误: https : //github.com/NuGet/NuGetGallery/issues/2535
编辑十月2015一篇文章,build议你真的应该使用TLD的includeSubDomains来解决cookies中的缺陷: http : //www.kb.cert.org/vuls/id/804060 。 这是事实(具有DNS访问权限的黑客可能会创build一个虚构的子域名,并使用它在TLD级别设置cookie)。 然而,上面的自动拒绝内部HTTP仅有的站点的风险依然存在,这只会保护你去TLD或预加载HSTS。
没有服务于includeSubDomains – 标志的方法意味着更多的工作和纪律,但不被认为是有害的,特别是当你有这样做的理由。
您可以在每个带有includeSubDomains的外部HTTPS服务器上明确设置HSTS – 标头。
此外,请确保每个HTTPS – 服务器都有额外的HTTP – > HTTPS – redirect。
但最好的做法是将HTTPSstream量也用于内部网站。 你可以使用自己的CA或通用证书,而不是那么昂贵