我是这个话题的新手。我们使用 GCP(App Engine,标准)来托管一个 nodejs 应用程序。然而,出于不同的原因,我们决定创建两个服务——stage和default(认为是同一个应用程序并行运行)。
默认一个与自定义域(GAE 提供的 SSL 证书)连接并正常工作。可以使用 google 生成的 URL (stage-dot-example.appspot.com) 访问舞台服务,并且显然受到 ssl 证书的保护。
然后,我们必须通过合作伙伴的安全审查,我们为此使用了阶段。
结果是我们必须禁用 TLSv1.0 和 TLSv1.1。使用 GAE - 我们需要创建负载均衡器并将 SSL 策略切换到特定于 TLS 的策略。
问题:要创建外部 HTTPS 负载平衡器 - 您必须创建 SSL 证书资源(即您必须拥有域)。使用自定义域,我想这应该不难,但我该如何为舞台做到这一点?我是否在 SSL 证书资源中使用我的阶段域 (...appspot.com)?如果是这样 - 我如何处理 DNS 记录和外部 IP(您需要将 IP 切换到 A 和 AAAA 记录中的外部 IP)?
或者如果我做错了什么 - 你能指出我正确的方向吗?
更新 + 更新 2
我决定走 Wojtek_B 提出的路径。所以我验证了 stage.example.com,它在没有负载均衡器的情况下运行良好。
那时,我的 DNS 记录包括来自 @ 的 4 条 A 和 4 条 AAAA 记录,带有 google 提供的 IP,以及 3 条 CNAME 记录(www、stage、www.stage)指向“ghs.googlehosted.com”。
接下来,我创建了具有 4 个域的 SSL 证书资源:example.com、www.example.com、stage.example.com、www.stage.example.com。
然后我添加了一个外部 HTTPS 负载均衡器(使用外部 IP,例如,1.2.3.4 和上面提到的 SSL 证书)。
我为@、www、stage 和www.stage 添加了新的A 记录以指向1.2.3.4。我已经删除了 CNAME 记录,因为它们过多。
等待 2-3 小时(TTL 为 1/2 小时)后,所有子域都被激活,除了 example.com(卡在 FAILED_NOT_VISIBLE 中)。
回答
一段时间以来,我一直在与托管 SSL 证书陷入供应状态作斗争。我遵循本教程,您应该只创建外部 IP (v4)。但我也有 4 条 AAAA 记录(在域验证期间获得)(显然)ipv6。所以我尝试保留外部 IP (v6),不到一分钟就将所有 4 个(子)域推送到活动状态。
在短短几分钟内,通过 LB 的两个服务都启动并运行所需的 TLS 配置。
您只能在 GCP 中将 SSL 证书用于指向负载平衡器的域。如果您尝试为应用引擎应用程序配置证书,则不会生成该证书。
可能发生的原因有几个:
但是,您可以使用的所有应用程序引擎地址(带有 *.appspot.com 子域)都具有有效的 SSL 证书。但是你不能使用负载均衡器。
如果您可以在没有负载均衡器的情况下运行所有暂存测试,那么 GCP 的 SSL 证书就可以完成这项工作。
如果您需要让您的登台环境在与生产环境相同的设置中运行,那么您需要创建一个新的 LB,其 backedn 指向您的 GAE 服务。此外,您将需要另一个域(或至少是子域)。您需要使用域以外的域,
*.appspot.com
因为创建 GCP 的自我管理 SSL 证书需要提供指向 LB 本身(而不是 GAE)的域。在您的情况下,我建议创建一个新的子域。然后创建新的 LB 并为该子域生成新的 SSL 证书。配置证书最多需要 60 分钟。您还必须更改
A
子域中的记录以指向新创建的 LB - 只有这样才能成功配置 SSL 证书(因为域必须指向 LB)。或者,您可以将您的子域添加到现有证书的域列表中。保留为域创建的所有记录,并在创建子域后创建一组新记录
A
(以及AAAA
必要的记录)。如果您使用的是 GCP 的 Cloud DNS,那么它将如下所示:
另外,我建议您阅读链接的文档,以更好地了解整个过程。