Google App Engine为默认域提供了错误的HTTPS证书

时间:2019-03-05 11:58:58

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

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

我不知道什么时候部署失败,但是当服务部署不起作用时,我再试一次部署也没关系,它继续不起作用。

标准行为

  • 该应用已部署到https://<service>-dot-<project>.appspot.com
  • 一切正常

错误行为

  • 该应用已部署到https://service.project.appspot.com请注意,该网址具有.而不是-dot-
  • 带有-dot-的网址无法解析
  • 应用程序的部署网址提供了*.appspot-preview.com的证书,由于存在HSTS,我无法绕过它

GCP控制台不报告任何内容:控制台中的所有位置都链接到假定正确的网址(带有-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

1 个答案:

答案 0 :(得分:1)

经过一番调查,我发现了罪魁祸首:在documentationservice部分,它说(强调我的意思):

  

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

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

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