首页 > 解决方案 > Google App Engine 为默认域提供错误的 HTTPS 证书

问题描述

我有一个 Google App Engine,我在其中部署了不同的服务,但为某些服务提供了错误的证书。

我不明白什么时候部署失败,但是当服务部署不起作用时,如果我再次尝试部署它也没关系,它仍然不起作用。

标准行为

错误行为

GCP 控制台不报告任何内容:控制台链接中的任何地方都指向所谓的正确 url(带有 的那个-dot-),给了我一个未解析的域。唯一显示有效url的地方是部署后的终端

我使用 部署gcloud app deploy --project ${PROJECT} --version ${COMMIT_SHA},我app.yaml的是:

runtime: python27
service: <service_name>
threadsafe: true
api_version: 1

handlers:
- url: /
  static_files: dist/index.html
  upload: dist/index.html
  secure: always

- url: /(.*)
  static_files: dist/\1
  upload: dist/(.*)
  secure: always

标签: google-app-enginegoogle-cloud-platform

解决方案


经过一些调查,我找到了罪魁祸首:在文档中,部分service,它说(强调我的):

每个服务和每个版本都必须有一个名称。名称可以包含数字、字母和连字符。它不能超过 63 个字符 ,并且不能以连字符开头或结尾。为每个服务和每个版本选择一个唯一的名称。不要在服务和版本之间重用名称。

这并不完全准确,因为根据RFC 1035,每个 DNS 标签最多可以包含 63 个字符,在我们的例子中,子域是<service>-dot-<project>,这意味着<service>-dot-<project>不能超过 63 个字符,因此service不能超过(63 - len(project) - 5)字符。

我使用的服务名称短于 63 个字符,但长于 (63 - len(project) - 5). 缩短服务名称可以解决问题。


推荐阅读