【问题标题】:App Engine access service(s) with custom domain and HTTPS具有自定义域和 HTTPS 的 App Engine 访问服务
【发布时间】:2017-12-28 06:05:32
【问题描述】:

我有一个设置为使用自定义域的 GAE 应用程序,我们称之为 mycustomdomain。这个裸域在 HTTP 和 HTTPS 上运行良好。我还有一个叫api的服务,可以通过http://api.mycustomdomain.com(自定义域约定)访问成功。

但是,我无法通过 HTTPS 访问 api 服务。我为 mycustomdomain.com 上传了 SSL,但尝试通过 HTTPS 访问 api 服务时出现错误(无法访问站点)。我的问题是我是否需要购买 wildcard.mycustomdomain.com SSL 才能通过 HTTPS 访问 api 服务?我在处理 SSL 证书和 GAE 自定义域方面没有太多经验,因此将不胜感激。谢谢!

编辑:更新了 GCP Console 配置信息。 我在控制台中的应用设置包含以下内容: 服务:默认,api 自定义域设置:mycustomdomain.com SSL 上传:ultrahdlivewallpaper.com(不是通配符版本)、api.ultrahdlivewallpaper.com(无法为自定义域启用,无匹配)

更多细节:问题是当我同时映射 ultrahdlivewallpapers.com 和 api.ultrahdlivewallpapers.com 时,它们都映射到默认服务。我想要api。指向 API 服务。如果我只映射ultrahdlivewallpapers.com,那允许我在api子域访问api服务,但是api SSL不能应用于api。子域,因为它没有被列为子域。

2017 年 7 月 24 日更新:在通过 GAE 控制台尝试了多个场景后,我认为这是 App Engine 设置的限制。我们为 ultrahdlivewallpapers.com 设置了一个自定义域,并为此域启用了 SSL 证书。域指向默认服务。我们有第二个服务设置,称为 API。 Google 对任何服务设置的路由规则是通过 HTTP://service-id.custom-domain,在我们的例子中是 api.ultrahdlivewallpapers.com。但是,当我为 api 子域上传 SSL 时,控制台找不到匹配的域,因为 api 子域不是通过控制台指定的。现在,如果我将 api.ultrahdlivewallpapers.com 设置为自定义域,我就可以为 api 子域启用 SSL。然后问题变成 api 子域现在指向默认服务而不是 api 服务。如果我删除 api 映射,我可以再次浏览到 api 服务,但没有 HTTPS!我不相信没有为所有子域启用通配符 SSL 的情况下正确设置此设置的方法。如果我遗漏了什么,请告诉我。我已经通过控制台尝试了我能想到的一切。谢谢。

【问题讨论】:

  • 我搜索了许多关于通过 HTTPS 访问自定义域的 SO 帖子。我的问题尤其是关于如何通过 HTTPS 使用自定义域设置应用服务。有趣的是,谷歌自己的文档甚至没有讨论这种情况。在为 *.mycustomdomain.com 购买通配符 SSL 之前,我只想澄清一下
  • 干草,你成功了吗?我遇到了同样的问题。

标签: google-app-engine ssl google-app-engine-php


【解决方案1】:

您本身不一定需要“通配符”证书。但是,您确实需要获得涵盖所有子域的证书。例如:

mycustomdomain.com
www.mycustomdomain.com
api.mycustomdomain.com

这是一个标准的解决方案,并不难做到。 Certbot (Let's Encrypt) 让它变得简单。

【讨论】:

  • 感谢您的帮助。我实际上购买了两个单独的 SSL,一个用于 mycustomdomain.com,另一个用于 api.mycustomdomain.com。不幸的是,对于 api.mycustomdomain.com SSL,GCP Console 不允许我直接将其映射到 api 子域,它显示“没有匹配的域”。我想我需要为 mycustomdomain.com 和 api.mycustomdomain.com 获得一个 SSL。希望这会奏效。明天第一件事就试试。谢谢!
【解决方案2】:

如果您选择获取通配符证书,安装非常简单:

  1. 您在开发者控制台中上传证书(在 App Engine -> 设置 -> SSL 证书 -> 上传新证书)。可能需要一些努力,另请参阅Google App Engine SSL with Let's Encrypt "could not be inserted"

  2. 一旦它在证书表中可见,您可以单击其名称,您将最终进入证书编辑屏幕,您可以在其中选择它适用于哪些自定义(子)域(从所有自定义的列表中)应用中映射的域),如下所示:

注意:这些是相应的自定义域映射:

  1. 如果您有另一个应用程序(在同一管理员帐户下)也映射到同一域的子域,您也可以以类似的方式激活其上的证书(当您登录时控制台会自动在列表中显示证书)切换应用,无需重新上传)。

【讨论】:

  • 感谢您的评论。我对第 2 步屏幕截图有疑问。当我为 mycustomdomain.com 上传 SSL 时,我只看到 mycustomdomain.com 和 www.mycustomdomain.com。为什么我看不到 api.mycustomdomain.com?是因为 SSL 吗?我为 api.mycustomdomain.com 设置了单独的 SSL。但是当我上传它时,它显示“没有匹配的域”,所以我无法为子域 api 启用它。如您的屏幕截图所示。谢谢!
  • 您需要使用有关您的应用的开发者控制台信息更新您的 Q:服务、自定义域和 SSL 配置。
  • 我用配置信息更新了我的 Q。您能否解释一下如何为三个自定义域“启用 SSL”?该信息是否包含在 SSL 证书中或您在控制台中设置的内容中?我的 api.customdomain.com 证书没有显示任何匹配的域,因此我无法为我的 API 服务启用它。
  • 好的,你能包括各个开发者控制台屏幕的快照吗?我无法从您的描述中弄清楚您的描述 - api.ultrahdlivewallpaper.com 没有在您的自定义域设置中列出时应该如何工作?
  • 您的服务是否在自定义域上使用 HTTP?他们是否在 appspot.com 上使用 HTTPS?通常,在您对这两个问题都回答“是”之后,您应该考虑让 HTTPS 在自定义域上运行。
猜你喜欢
  • 2018-09-03
  • 2019-08-29
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 2020-02-15
相关资源
最近更新 更多