【问题标题】:App Engine deploy failing with "fatal: unable to access 'https://gopkg.in/yaml.v3/': server certificate verification failed."App Engine 部署失败并显示“致命:无法访问‘https://gopkg.in/yaml.v3/’:服务器证书验证失败。”
【发布时间】:2021-10-02 21:51:43
【问题描述】:

其他人在将 Go/Other 项目部署到 App Engine 时遇到此问题?

部署在 9 月 28 日星期二运行良好。我尝试在 10 月 1 日星期五(昨天)和今天进行部署,但仍然遇到同样的错误。这不是与代码相关的错误,因为自上次部署以来代码没有更改。

来自日志:

第 2 步 - “构建”:执行: gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c:git fetch -f 来源 refs/heads/:refs/heads/ refs/tags/:refs/tags/ in /layers/google.go.gomod/gopath/pkg/mod/cache/vcs/5ea86ba1b933025fb7a7a539058d4acea777e0b3175c573a70130f7ea565323f: 退出状态 128:步骤 #2 -“构建”:致命:无法访问 'https://gopkg.in/yaml.v3/':服务器证书验证失败。 CAfile:/etc/ssl/certs/ca-certificates.crt CRLfile:无

如果我没看错,App Engine 中是否缺少证书?但是,我不确定它需要什么证书,因为我以前从未提供过。也许如果我删除证书文件,App Engine 会重新创建它?

有什么想法吗?

【问题讨论】:

    标签: google-app-engine deployment certificate


    【解决方案1】:

    也遇到过证书错误。

    假设您使用的是官方的 golang 镜像,要修复证书问题,您需要更新 ca-certificateslibgnutls30 包。

    RUN apt update && apt install ca-certificates libgnutls30 -y
    

    【讨论】:

    • 在 Google 的 PaaS 环境(App Engine 标准)中,您无法直接访问构建环境。您可能能够在构建触发器期间运行某些脚本,但我将如何做到这一点并不明显。将问题提交给 Google 问题跟踪器后,Google 修复了该问题。我将运行时改回 go111 并且应用程序部署没有问题。迁移到 go115 已在我们的路线图中,很高兴我现在不必这样做。
    【解决方案2】:

    我在 Travis CI 构建时遇到了同样的问题。

    我将构建映像更改为 ubuntu 20.04(从 16.04 开始) 并更新软件包 ca-certificates

    sudo apt-get update
    sudo apt-get install --reinstall ca-certificates
    

    【讨论】:

    • 在底层,App Engine 标准环境是 Debian。所以,我尝试了我认为相当于 Debian 的“update-ca-certificates”,但问题仍然存在。我也试过: git config --global http.sslVerify false export GIT_SSL_NO_VERIFY=1 我感觉执行这些命令的 vm 实例与谷歌工具用来部署的不同。 App Engine 标准环境是一个 PaaS 环境,理论上,您不必担心此类设置,因为该环境会处理此类任务。
    【解决方案3】:

    解决了...大部分

    此解决方案适用于使用 Go 1.11 在 App Engine 标准环境中运行的用户

    将 app.yaml 中的运行时更改为

    runtime: go115
    

    并在 go.mod 文件中更改您的 go 版本:

    module myapp
    
    go 1.11
    

    这将允许您部署您的应用程序。就我而言,我必须对 app.yaml 进行其他更改。例如,我必须添加

    app_engine_apis: true
    

    我现在部署了我的应用程序,但没有完全运行。如果我发现其他任何内容,我将在此处发布相关修复。希望这对遇到此问题的人有所帮助。

    【讨论】:

    • Google 何时添加此 app_engine_apis 标志?多年来,我们一直停留在 1.11 上。 devappserver 是否仍然可以使用该标志?
    • Henry,此功能已作为 [1] 中的预览功能发布,用于将 App Engine 捆绑服务用于第二代运行时。 [1]cloud.google.com/appengine/docs/standard/go111/config/…
    【解决方案4】:

    总而言之,这是 App Engine 方面的一个问题。其他用户也遇到了同样的问题,Google 团队解决了这个问题。

    作为参考,我在这里发布了这个问题:https://issuetracker.google.com/issues/201753230

    对于我的项目,我将“runtime:go115”更改恢复为 go111(也从 app.yaml 中删除了 app_engine_apis)并且应用程序正常部署。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 2018-10-20
      • 2013-06-17
      • 1970-01-01
      • 2017-07-16
      相关资源
      最近更新 更多