Cloudflare 和 Heroku 的多租户 SSL

Multi-tenant SSL with Cloudflare and Heroku

我目前正在构建一个应用程序,该应用程序将位于 app.mydomain.com,即 Heroku 上的 运行。所有用户都有自己的入口点,如 app.mydomain.com/client1、app.mydomain.com/client2 等。我希望客户能够设置自己的域(www.clientdomain.com) 并将其命名为它们的入口点。我知道到目前为止,这是非常简单的。

我所有的 DNS 都由 Cloudflare 处理,我相信我可以将 Cloudlfare 配置为完全(严格)模式,我需要做的就是将他们的 Origin Cert 安装到我的 Heroku dyno 上。这将确保所有直接连接到我的域都是安全的(转到 app.mydomain.com/client1)。

问题是,客户端如何为他们的域获取 SSL 连接?我是否需要获得多域证书并在获得客户时开始向其添加域,或者我是否应该将他们的证书安装到 Heroku 上(我相信我只能安装 1,所以那是不可能的)或者它应该继续存在Cloudflare 某处,或者是否有我没有看到的其他选项(我希望有!)。

我不是想知道如何为我自己的域做些什么,而是客户如何与解析到我的服务器上的域建立 SSL 连接。

这有点令人费解!

流程是(我认为): 用户浏览器 -> 客户端 DNS -> (cname to) My Cloudflare -> Heroku

编辑 - 澄清后

I'm currently building an application that will reside at app.mydomain.com which is running on Heroku. All users will have their own entry points, like app.mydomain.com/client1, app.mydomain.com/client2, etc. Question is, how does a client go about getting an SSL'ed connection for their domain; do I need to get a multidomain cert and start adding domains to it as I get clients?

如果您打算为所有客户使用同一个 Heroku 应用程序(顺便说一句,我认为这是个坏主意,但您可能需要这样做)-那么是的-您应该获得一个多域证书并随着客户列表的扩展不断向其中添加域。

原始答案 - 解释了 Heroku 上的 SSL + 负载平衡。

Im currently building an application that will reside at app.mydomain.com which is running on Heroku. I was clients to be able to setup their own domain www.clientdomain.com and cname it to mine.

您将需要一个通配符证书来覆盖您的子域(对于 app.mydomain.com)。您将在 heroku 中使用该证书。

...all I need to do is install their Origin Cert onto my Heroku dyno.

你是对的 - 除了它不在你的 Heroku dyno 上,它在你的 Heroku 应用端点上。这里有一篇很好的读物:https://serverfault.com/questions/68753/does-each-server-behind-a-load-balancer-need-their-own-ssl-certificate

If you do your load balancing on the TCP or IP layer (OSI layer 4/3, a.k.a L4, L3), then yes, all HTTP servers will need to have the SSL certificate installed.

If you load balance on the HTTPS layer (L7), then you'd commonly install the certificate on the load balancer alone, and use plain un-encrypted HTTP over the local network between the load balancer and the webservers (for best performance on the web servers).

所以您应该将 SSL 证书安装到您的 Heroku 端点,让 Heroku 处理其余的事情。

Question is, how does a client go about getting an SSL'ed connection; do I need to get a multidomain cert and start adding domains to it as I get clients, am i supposed to install their cert onto Heroku (I believe I can only install 1 so thats a no go) or is it supposed to live on Cloudflare somewhere?

如果您指的是从 heroku 添加 servers 到您的 service,您需要做的就是增加 web 的数量-dynos。 Heroku 将处理这些测功机之间的负载平衡。您的 SSL 证书应在负载平衡器中解析,以便您的测功机将为 相同端点的请求提供服务。 您定义的端点不需要另一个 SSL 证书 - 只要因为您正在处理来自附加到它的多个测功机的流量。

嗯,看起来这可能是这个问题的一个非常可靠的解决方案...

https://blog.cloudflare.com/introducing-ssl-for-saas/