![如何在 Apache 上配置多租户 web 应用程序,我需要分别添加每个客户域证书?](https://linux22.com/image/778148/%E5%A6%82%E4%BD%95%E5%9C%A8%20Apache%20%E4%B8%8A%E9%85%8D%E7%BD%AE%E5%A4%9A%E7%A7%9F%E6%88%B7%20web%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E6%88%91%E9%9C%80%E8%A6%81%E5%88%86%E5%88%AB%E6%B7%BB%E5%8A%A0%E6%AF%8F%E4%B8%AA%E5%AE%A2%E6%88%B7%E5%9F%9F%E8%AF%81%E4%B9%A6%EF%BC%9F.png)
在我们的服务器 (Apache/Ubuntu18) 上,我们有一个正在运行的 Web 应用,它是一个多租户 Web 应用。因此,对于每个新客户端,都会有一个新的租户设置,并且它会创建一个新的子域。所以:
Web 应用程序/Vhost:domain.com
客户 A:A.domain.com(但想通过自己公司的网址访问应用程序。所以 A.nike.com) 客户 B:B.domain.com(但想通过自己公司的网址访问应用程序。所以 A.adidas.com)
等等等等。
因为他们想要使用自己的公司 URL,所以我们为我们的 Web 应用设置了通配符 SSL 证书,每次需要将公司添加到此列表时,我们都需要运行 Certbot 来将域名添加到列表中并进行验证。但这真的很麻烦,因为这样每次我们需要续订证书时都需要要求客户添加 TXT 记录。
是否可以为每个公司网址单独创建 SSL 证书,并配置应用程序/虚拟主机来处理这些证书?因此不再使用通配符 SSL,而是为每个公司创建一个 SSL 证书
答案1
无论如何,他们都需要将他们的A.nike.com
和A.adidas.com
指向您的服务器才能使用他们自己的域名。因此 HTTP-01 和 ALPN-01 质询都可用于检查这些名称。
问题是,您想使用通配符证书,但它需要 DNS-01 质询。在单个虚拟主机中不可能指定多个证书(相同算法)。
为了解决这个问题,您可以像以前一样管理通配符虚拟主机,并使用 DNS-01 质询作为其证书。不要在该虚拟主机中添加任何外部主机名。
然后,创建一个具有相同设置的附加虚拟主机,但适用于所有外部主机名(例如A.nike.com
)。它将使用另一个证书,您将使用 HTTP-01 或 ALPN-01 质询来维护该证书,这已经足够了,因为其证书中没有通配符,并且它们的 DNS 已经指向您的服务器。