是否有必要为只转发到另一个域的域拥有SSL证书?

时间:2017-05-25 14:07:47

标签: security ssl dns forwarding

我有一个应用程序使用帐户slug用于格式myapplication.com/{SLUG}的各种帐户,类似于Github的工作方式。这个域名有SSL证书,一切都很好。

但是,我有一些客户购买了他们提供给客户的域名,并将其转发到我的应用程序的帐户页面。

例如,假设“John Smith”购买了域johnsmithisawesome.com,并将该域设置为转发到myapplication.com/johnsmithisawesome。它主要用于品牌推广,因此John可以向客户提供一个很酷/吸引人的域名,最终将它们发送到我的应用程序。

请注意,此重定向仅发生一次。我没有使用它作为代理,它只是一种方便的方法,人们使用一个吸引人的域,将它们完全重定向到应用程序域。在初始重定向之后,客户端将在应用程序域上,并且所有请求都直接进入受保护的应用程序,并且它们不应再引用不安全的域。

另请注意,没有安全凭据来回传递给不安全的域。如果客户端必须登录,则他们直接在应用程序域上执行此操作,并且根本不与不安全的域进行交互。

流程基本上是这样的:

  1. 用户在浏览器中访问johnsmithisawesome.com
  2. johnsmithisawesome.com的DNS使用指向myapplication.com/johnsmithisawesome
  3. 的HTTP REDIRECT
  4. 用户的浏览器网址现在位于myapplication.com/johnsmithisawesome
  5. 所有进一步的请求都经过myapplication.com/johnsmithisawesome,没有进一步的请求通过johnsmithisawesome.com
  6. 我希望在我想要完成的事情中明确说明这一点,我知道我对术语并不熟悉。

    在域名上没有SSL证书的情况下是否存在安全风险,只是将其转发给我的应用程序?

    我的假设是无所谓,因为实际的应用程序本身受SSL(或TLS作为新标准)的保护,我想不出使用域只是转发的任何安全风险,但是想要和一些比我更了解这个的人检查:)

2 个答案:

答案 0 :(得分:1)

不幸的是,简短的回答是肯定的,如果您想保护它,您也需要为其他域提供单独的SSL证书。

请考虑以下事项。 Alice(最终用户)在她的浏览器中输入johnsmithisawesome.com,浏览器发出请求。中间人攻击者Mallory捕获请求,向https://yourapplication.com/johnsmithisawesome发出请求,该请求在Mallory和您的应用程序之间创建SSL会话。当Mallory收到响应时,将对您的应用程序的所有引用转换为http://johnsmithisawesome.com并返回结果(已修改)页面 爱丽丝。

您的应用程序可以看到的是这是https服务的请求,一切都很好。爱丽丝可以看到的是她进入一个域并获得了结果,甚至URL栏中的域名也与她想要看到的内容相符。 Mallory可以看到的是Alice和您的应用程序之间的所有(可能是保密的)流量。 Alice的唯一提示是浏览器中没有SSL的迹象,但是大多数用户都没有发现它。

这称为SSL Stripping,有一些现成的工具可以通过几次点击将其关闭。与原始想法相比,您的场景有点特殊,但它只是帮助攻击者。

事实上,马洛里甚至不需要这样做。如果没有johnsmithisawesome.com的证书,Mallory可以直接替换响应,而且他并不需要严格地删除SSL,因为没有任何SSL。 :)

这就是HSTS response header的发明,应该由您的应用程序和johnsmithisawesome.com在重定向期间发送。

答案 1 :(得分:0)

只要您不使用HTTP访问转发域,您就技术上不需要拥有证书,即重定向将起作用。只有当您想使用HTTPS访问转发域时,您在技术上需要此域的证书,即使在此域上执行的所有操作都要转发到其他位置。否则,最终用户将在浏览器中收到警告,并且不会进行转发。

但是,即使技术上不需要,出于安全原因,在转发域上使用HTTPS仍然是有意义的。

  

所有进一步的请求都通过myapplication.com/johnsmithisawesome,没有进一步的请求通过johnsmithisawesome.com

请注意,这只是技术观点,哪些有效,哪些无效。

我将此解释为对客户端域只有一个请求导致重定向到最终域。并且没有敏感数据将与客户端域共享,但仅与最终(安全)域共享。

在这种情况下,主攻击向量是中间攻击的人,它会更改重定向的目标,例如从myapplication.com/johnsmithisawesome到攻击者控制的域和像myapplication-secure.com/johnsmithisawesome这样的URL。通过正确命名的域,攻击者肯定会诱使用户相信他到达了正确的站点。

通过使用HTTPS保护重定向可以减轻此类攻击,并且在安全方面,这是最佳选择。但这意味着客户端应该首先使用HTTPS访问客户端域,否则攻击者可能会劫持初始请求并更改重定向。如果接受此风险并希望在第一个请求期间攻击者不在场,则可能会重定向到HTTPS并添加HSTS标头以强制将来在客户端域上使用HTTPS,或者可以将301重定向到最终域而不是302重定向。使用301,浏览器将缓存重定向,并且不会再次询问客户端服务器,而是在下次访问时直接进入最终域,从而绕过设法拦截对客户端域的请求的攻击者。

  

johnsmithisawesome.com的DNS使用HTTP REDIRECT指向myapplication.com/johnsmithisawesome

这不是它的工作方式。

从技术上讲,DNS无法发出HTTP重定向。 DNS仅用于将主机名解析为IP地址。然后,此地址的HTTP服务器可以在HTTP级别执行重定向。

某些DNS提供商仍提供此类HTTP重定向。但这可以通过将主机名解析为DNS提供商拥有的IP地址并在此IP地址上运行特殊的HTTP服务器来实现配置的HTTP重定向。有时他们会让客户配置,如果这将是301或302重定向,有时不是。通常,无论如何都无法在这种设置中配置证书。