使用 IPv4 时 Google 证书端点出现 403

使用 IPv4 时 Google 证书端点出现 403

我正在使用该库google-auth~=2.28.1在我的 webapp 中启用“使用 Google 登录”。登录在我的本地计算机和测试服务器 (hetzner) 上有效,但在生产服务器 (也是 hetzner) 上,它最近停止工作。

这是我的 python webapp 中引发异常的部分:

id_info = id_token.verify_oauth2_token(
        credential, requests.Request(), auth_config.google_client_id
)

这是错误:

google.auth.exceptions.TransportError: Could not fetch certificates at https://www.googleapis.com/oauth2/v1/certs

该 Web 应用程序正在扩展的 docker 容器中运行python:3.10

我读完后读了这篇文章ServerFault 帖子我尝试了curlIPv4 和 IPv6,无论是从服务器还是从 Docker 容器内部。与 SF 帖子相反,IPv6 可以工作,而 IPV4 则不行。

curl -4 'https://www.googleapis.com/oauth2/v1/certs'

截断输出:

<p><b>403.</b> <ins>That’s an error.</ins>
<p>Your client does not have permission to get URL <code>/oauth2/v1/certs</code> from this server.  <ins>That’s all we know.</ins>
curl -6 'https://www.googleapis.com/oauth2/v1/certs'

截断输出:

{"6f9777a685907798ef794062c00b65d66c240b1b": "-----BEGIN CERT....}

我以前遇到过这个问题,几天后就解决了,但我想要一个更持久的解决方案。

答案1

Hetzner 解决了这个问题。原来,服务器的 IP 被伪造为伊朗 IP。(服务器本身位于德国)伊朗目前受到制裁,并被 Google 封锁。

切换主 IP 解决了该问题。

答案2

我们仍然遇到这个问题。

我们的 bitbucket 管道运行器托管在 hetzner cloud 上的 kubernetes 中,它们会根据需要动态扩展新节点。有时,在尝试联系 Google 服务器(用于从 GCR 下载 Android SDK 或 Docker 映像)时,在这些节点上运行的构建会收到 HTTP 403

相关内容