我正在为Rails多租户应用程序做一些规划,并想知道处理自定义域证书的最佳方法是什么。应用程序非常标准; ELB,应用程序服务器和多租户DB。
在我目前的用例中,租户每个都有一个独特的应用子域。这通常是使用通配符证书处理的。
然而,当我展望未来并考虑自定义域支持(SSL证书是由客户端上传还是自行生成并存储在AWS Certificate Manager中)时,我不确定如何最好地处理安装多个证书。假设已经配置了名称服务器,并且我已经通过AWS CM,letsencrypt或者已经生成/保护了相应的SSL证书。
我可以看到一些选项,我喜欢一些方向,以便最好地继续:
在这种情况下,我看到安装了自定义域证书的ELB。 ELB充当代理并指向主ELB,然后按正常方式加载余额。我自己喜欢这种方法,每个ELB额外的20美元/月+也没关系。
问题:你可以链接多个ELB而不会丢失重要的标题数据(比如主机吗?)我之前没有尝试过这个。
在这种情况下,每个自定义域都将安装在安装了自定义域证书的ELB上,并且每个服务器实例都将直接注册到它。我不认为这是理想的,因为每次我启动/关闭实例时,我都必须自动(de /)在每个ELB上注册实例。
使用HAProxy或替代方案,可以根据需要加载和删除SSL证书。然后,我需要(de /)向HAProxy注册实例,以及直接管理HAProxy服务器。我并不赞成这种做法,因为我试图减少我需要直接管理的实例数量。
这对我来说非常难看,因为我需要在发布时在每个应用服务器上安装每个证书,然后在每个服务器更改时重启(?)。
我还有其他方法吗?考虑因素我忽略了吗?
Chris在下面提到(再次感谢!)AWS Application Load Balancers最多可支持25个证书。这肯定足以让我开始,但我很好奇这种方法可以扩展到什么范围之外。多个ALB,HAProxy或......?
答案 0 :(得分:3)
2017年10月10日,AWS announced support for multiple SSL certs关于应用程序负载均衡器(ALB)。
所以解决方案是使用ALB。您可以将多个目标组与每个ALB关联,并且可以执行基于主机名的路由,因此即使您最终不得不对后端进行分片,您仍然可以指向单个ALB。
编辑1: 作为@Michael - sqlbot ponts out,如果每个ALB需要超过25个证书,您可能希望开始使用多个ALB来减少爆炸半径。
但是如果由于某种原因你需要这样做,另外一个选择(注意:我没试过这个)是使用CloudHSM for SSL/TLS processing。有两个版本:CloudHSM Classic(一次性5,000美元的费用,加上专用设备每小时1.88美元)和新的CloudHSM,每小时只需1.60美元。
答案 1 :(得分:1)
我们必须在SAAS处理这个问题。我们的设置目前看起来像这样:
当然,我们在所有这些中使用Let's Encrypt,我们使用Tenant SSL来管理基础架构。