问题描述
正在开发一个托管在app.example.com上的SaaS应用程序。现在他们希望为用户提供一个选项,让他们的自定义域名或子域名(如dev.stack.com)指向他们的应用程序,通过将A记录添加到1.2.3.4 IP地址(app.example.com托管的IP地址)。
在上述设置中,他们遇到了供应商域的SSL证书问题。是否有办法创建一个全局证书并将其添加到我们的服务器,以便适用于指向我们服务器的任何域名?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
你不能在没有他们的帮助的情况下为别人的域名或子域名获取安全证书。安全证书的核心安全支柱之一是确保你实际上是通过加密连接连接到了你想要连接的站点。为此,每个证书颁发机构都会进行最低限度的检查,以检查请求证书的实体是否拥有该域名的所有权。
对于“手动”颁发机构,这通常涉及上传一个文件到该域名上的Web服务器,创建一个DNS记录,或者点击whois记录中的注册人、管理员或技术联系人的电子邮件中的链接。
你可以使用Let’s Encrypt来满足你的SaaS应用程序的需求,它允许你:
1. 上传一个文件到域名上的一个文件夹:在这种情况下,你可以建议客户将A记录(或更好的CNAME)指向你的服务器,一旦解析完成,你就可以通过复制文件来颁发Let’s Encrypt证书。
2. 创建一个特定的DNS记录,这样你就可以创建证书。
Let’s Encrypt证书的有效期为90天,但由于你需要在任何情况下都需要A记录来运行你的SaaS,你将能够定期自行更新证书。
请注意,不久前,Symantec的子公司被发现(两次)并不总是检查域名所有权,然后似乎没有一致采取补救措施(两次)。这导致在给这些证书的所有者一些时间创建新证书后,Chrome和Firefox取消信任所有Symantec证书。
方案2
你可以为客户提供子域名入口,例如Client_x.yourapplication_domain.com。否则,你需要采取一些解决方案,例如在你的应用程序前面放置请求转发器(代理负载均衡器),并在那里配置客户域名的SSL。将clientdomain.com转发到Client_x.yourapplication_domain.com。