【问题标题】:Solution to point customers domains at our SAAS app将客户域指向我们的 SAAS 应用程序的解决方案
【发布时间】:2017-01-21 15:36:04
【问题描述】:

我在 node express 上有一个 SAAS 应用程序。该应用程序为每个注册创建租户子域,例如 mybiz.ourgreatapp.com。

我们希望允许用户将自定义域指向该帐户/url,即他们购买的域。

somedomainibought.com---->mybiz.ourgreatapp.com

我们还需要该域是 HTTPS。

Uur 域和通配符子域是 SSL。

所以:https://mybiz.ourgreatapp.com:有效。

我们已尝试使用适用于我们的子域路由的https://www.cloudflare.com 解决问题,但我们无法将其设置为使用客户域并将其指向这些路由。

我们怎样才能做到这一点?

【问题讨论】:

    标签: node.js ssl dns


    【解决方案1】:

    为不同的域创建证书

    你需要解决两个问题:

    1. 您的客户应将其域指向您的 IP/域,以便使用您的服务。解决方案:您可以创建一个专用域,如 cname.ourgreatapp.com。如果客户想要使用他自己的自定义域 - 他应该将他的域(在 99% 的情况下它将是客户的子域)指向您的 CNAME。在 1% 的情况下,客户想要附加域 - 最好为此类客户提供公共 IP。由于并非所有 DNS 提供商都支持将 CNAME 用于一级域
    2. 您需要为客户颁发证书。当您颁发证书时,您必须证明您对该域的权利(不同的证书颁发机构提供了多种选择来执行此操作)。幸运的是,当您已经有一个已经指向您的 CNAME 的客户时 - 您可以使用“HTTP 验证类型”(当您应该在某个 URL 处提供特定文本并且 CA 通过执行 GET 请求来验证该秘密值是否存在时。例如,免费的 LetsEncrypt证书提供商将验证 URLcustomersdomain.com/.well-known/acme-challenge/ 上的特定值 我认为这第二步太繁重,无法由您的 node-express 应用程序处理。最好将 SSL 签名逻辑提取到单独的层,甚至提取到单独的微服务。

    为了自动化此过程,您可以创建一个服务,该服务将为您客户的所有域请求 SSL(例如,通过实施 ACME 协议,从 LetsEncrypt 请求证书)。并设置代理服务器,它将代理来自所有客户域的请求,获取数据并使用适当的证书对响应进行签名。

    您还可以从包装箱中检查已经执行此操作的第三方解决方案。例如,Kilo SSL、Cloudflare 等。我还没有尝试用 Cloudflare 做,但只是检查了一下用 KiloSSL 做起来很容易

    【讨论】:

      【解决方案2】:

      您可以设置反向代理(例如使用 nginx)。使用服务器名称 somedomainibought.com 配置一个虚拟主机,该主机将代理传递给https://mybiz.ourgreatapp.com/。将此虚拟主机配置为使用 ssl 并侦听端口 443。

      然后,必须为域 somedomainibought.com 的区域文件配置一条指向反向代理 IP 地址的 A 记录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-07
        • 1970-01-01
        • 2019-07-29
        • 2014-05-31
        相关资源
        最近更新 更多