Google如何在其.app TLD上强制使用HTTPS?

时间:2018-05-09 16:36:29

标签: dns

在I / O 2018年,Google宣布推出新的.app TLD,他们表示只会使用HTTPS。

我认为DNS只是将域名映射到IP&#39。

他们如何强制使用HTTPS?

2 个答案:

答案 0 :(得分:8)

(这里有点offtopic)

它被称为HSTS预加载,请参阅https://hstspreload.org/

HSTS(HTTP严格传输安全性)是服务器回复客户端的一种方式:请仅通过HTTPS与我联系(有关示例,请参阅https://www.troyhunt.com/the-6-step-happy-path-to-https/)。它增强了安全性,但仍然没有解决一种情况:在浏览器得知应该已经完成​​HTTPS之前,第一次连接到给定服务器可以通过HTTP进行。

因此来了#34; preloading" HSTS。

基本上这是一个在所有主流浏览器代码中出现的硬编码列表 (有关兼容性取决于浏览器和版本,请参阅https://caniuse.com/#feat=stricttransportsecurity,或者参见底部的代码[1]链接),其中说明哪些域/ TLD启用了HSTS,这意味着根本不允许任何HTTP连接。

请注意:

  1. 任何人都可以按照一些要求向此列表提交姓名,请参阅https://hstspreload.org/#submission-requirements
  2. 谷歌(因为它从Chrome开始,但它现在在浏览器中传播)欢迎包含TLD而不仅仅是主机名,请参阅文档末尾https://hstspreload.org/(" TLD Preloading")
  3. 过去他们已经添加了.DEV(TLD本身尚未生效,但谷歌将推出它"很快")这打破了他们使用的许多开发人员设置(错误地)一个.DEV域名,用于命名其本地资源,一旦使用较新的HSTS预加载列表更新浏览器,他们就会拒绝连接到没有HTTPS的本地.DEV主机。你可以在这里和其他地方找到(例如https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/)许多开发人员反对的恐怖故事,也可能是人们为此提供了不好的解决方案(比如禁用HSTS预加载,这是一个非常糟糕的主意)。

    此外,当您购买.APP域名时(.DEV也会相同),Google(作为.APP的注册管理机构)确保与所有注册商签订合同,在结帐.APP域名购买时,会显示一条突出的消息,说明以下内容:" .APP是一个安全的TLD,网站只能使用SSL证书(原文如此);确保购买SSL证书" (SSL证书是直出谷歌文档,这是很可悲的阅读它们的出,因为它是错上加错名词,它应该是一个" X.509证书"或者,为了不吓到任何人,至少是用于TLS通信的证书",现在不再使用SSL了......)。

    顺便说一下,.APP昨天,5月8日以标准价格向公众开放。

    当然所有这些只与网页浏览有关。您可以在.APP域名之上设置任何其他类型的服务,例如电子邮件,而不需要任何强制性TLS(这当然不是一个好主意,但没有什么可以阻止您这样做)。对于电子邮件,目前正在讨论基本的HSTS,但对于MTA,请参阅https://datatracker.ietf.org/doc/draft-ietf-uta-mta-sts/

    [1]使用HSTS预加载列表查看一些源代码:

    或者您可以使用https://hstspreload.com/处的API来了解名称是否在列表中

答案 1 :(得分:1)

这只是一项政策。域名是域名,DNS仅关注名称如何转换为其他资源,例如IP地址。从技术上讲,任何IP地址都可以与任何IP协议一起使用(有256个可供选择,其中一个是TCP),适用时,任何端口号(有65536个可供选择,其中两个分别是HTTP和HTTPS) 。没有办法通过DNS对此进行限制,但当然TLD注册商可以尝试通过策略规则来实现此目的。

通过反复试验,我很容易找到一个没有强制执行HTTPS的.app域名:

curl -v -L http://foo.app/

这导致一些重定向,但没有一个重定向到HTTPS,最终响应是来自GoDaddy地址的HTTP响应。