我有一个网络服务,它通过支付页面提供简单的网站构造功能。
用户可以选择购买域名,例如用户网站,选择一些模板并将该域与 CNAME 指向我的 web 服务,例如site.constructor.com。
有很多这样的用户网站,他们都指向site.constructor.com。
Webservice 站点使用通配符证书 *.constructor.com 覆盖,托管在 AWS 上,并且 SSL 证书应用于负载均衡器 HTTPS 处理程序。
现在当任何人导航https://user.com他从sites.constructor.com,但在此之前他收到了警告窗口,用户网站不包含正确的证书(因为主机证书已被使用)。
现在我需要https://user.com安全,但不明白如何做到这一点。
我没有任何负载均衡器配置,也没有针对此域的 Web 服务配置。唯一的入口是带有用户域名的 CNAME 和 DB 记录。因此,我甚至无法简单地为用户域购买新证书并应用它。
保护 CNAME 域名的最佳方法是什么?
更新1.用户的域访问流程
1. Navigate _https://user.com_
there is only domain control panel with CNAME which points to the _site.constructor.com_
2. call to the AWS load balancer of _site.constructor.com_ with applied SSL (SSL is NOT for _user.com_)
3. access to the EC2, etc...
应该在哪里用户网站证书可以应用吗?在这种情况下,是否可以使用自生成的证书用户网站?
答案1
存在CNAME
记录而非直接地址记录 ( A
/ AAAA
) 不是一个因素。证书验证基于位置 URL 中的主机名。
要导航到https://example.com/
工作,您需要一个有效期为 的证书example.com
。即,该证书具有example.com
作为主题的中国example.com
(通用名称)或其存储区域网络(主题备用名称)列表。
答案2
除了 Håkan Lindqvist 之外,关于您的更新还有一个答案:
user.com 证书应该在哪里申请?
HTTPS
在终止/的机器上TLS
。
在这种情况下,可以为 user.com 使用自生成的证书吗?
当然……但使用这些证书会给访问者带来证书警告(假设 CA 证书在他们的浏览器中不为人所知/不可信)。如果您想防止这种情况发生,您需要获得由知名且“受信任”的 CA 签名的证书。(如果我们谈论的是许多域,也许可以看看让我们加密:“它是免费的、自动化的和开放的”。)
答案3
除了其他答案之外,请注意,如果您的服务器正在为许多不同的域处理 SSL/TLS,则您需要拥有单身的证书封面全部的域或有服务器名称指示(SNI)在服务器上配置,使其能够对不同的域使用不同的证书。客户端也需要支持 SNI,但所有现代 Web 浏览器都支持,但请注意,Windows XP 上的大多数浏览器都不支持。(理论上还有第三种选择,即让多宿主服务器对每个域使用不同的 IP 地址,但我认为这对你来说不太可能。)
答案4
您必须将请求直接重定向到您的子域。这是一个隐藏的重定向,因此请求的域没有有效的证书。