SSL 证书未在 Google Cloud Console GKE 中更新

标签 ssl google-cloud-platform google-kubernetes-engine

我从我的客户那里得到了一项与在现场添加 SSL 证书有关的任务。该站点已经安装了一个 Let's encrypt SSL 证书,该证书现已过期(我通过单击浏览器获得此信息 “不安全” 出现在您输入的网址左侧的红色通知,然后进入证书弹出窗口中的选项)。 screenshot of popup
我的客户网站托管在谷歌云上。该站点在 1 个实例组中有 4 个 vm 实例。它还有一个 TCP 负载均衡器,带有 1 个目标池和 targetpool - targetinstance 作为后端类型,并且在后端显示了 4 个以上 vm 实例。负载均衡器的前端配置包含 TCP 作为协议(protocol),高级 作为网络层和 80-443 端口选项中的值。 screenshot of frontend configuration
4 个 VM 实例中的每一个都在 中显示两个值“正在使用”列,一个是实例组名称,第二个是 tcp 负载均衡器名称。在实例组中显示 使用作为“生产”单击哪个进入生产集群。
然后我从连接选项打开集群外壳并运行此命令。

kubectl get secrets/tls-retail -o yaml
在这里我发现这个 secret 与 SSL 和 tls.crt 字段中的值(当 base64 解码并从证书解码器检查时)显示与浏览器弹出窗口中显示的相同到期日期
然后我更改了同一个 secret 文件中的 tls.crt 值并使用下面的代码保存它,但它没有受到任何影响。
EDITOR=nano kubectl edit secrets tls-retail
从这个 stackoverflow 链接 (How to restart a GCP Ingress Item To Use Updated Secret) 我发现它需要 10-20 分钟才能生效,但即使在 1 到 2 小时后也没有任何影响。你能指导我为什么这个变化没有任何影响。或者如果有人可以指导我如何在上述情况下使用谷歌管理的 ssl 证书,因为我是谷歌控制台和 GKE 的新手。
谢谢

最佳答案

当您转到网络服务 > 负载平衡并单击高级菜单链接时,您可以单击证书选项卡以查看已将哪些证书添加到项目中。你的新证书在吗?它是否被您的入口列为正在使用?
finding the advanced tab on Load Balancers - they hide SSL Certs for some reason
Certificates tab will show you what certs your project knows about
这个集群是如何部署的?入口是如何部署的?这是使用“clickops”(使用 Web 界面)还是使用 IAC(如 Deployment Manager(GCP 产品)或 Terraform)部署的?当我需要轮换我的证书时,我:

  • 通过点击“负载均衡”界面的高级菜单中的“创建SSL证书”将新版本的证书添加到项目中
  • 在我在步骤 1 中访问的那个界面中上传了新的证书文件。我给它起了一个有意义的名称(我们称之为“my-new-cert”)
  • 更新了我的 ingress 的 Deployment Manager 配置文件以设置 properties.metadata.annotations.ingress.gcp.kubernetes.io/pre-shared-certmy-new-cert
  • 使用 Deployment Manager 命令重新部署入口。

  • 要记住的另一件事是您链接到的该线程中的第二条评论 - 它提到了一个事实,即如果证书无效,GKE 将不会安装它。我建议使用 OpenSSL 验证证书链 - here's a relevant thread这可能对你有帮助。
    == 编辑添加 ==
    在 GCP Console 中,您还可以转到 Kubernetes Engine > Services & Ingress > “Ingress” 选项卡,单击有问题的 ingress,然后单击顶部的 Edit 链接以更新其 YAML(使用新的名称您已添加到项目中的证书)。如果您使用某种 IAC 来部署此入口,我不推荐此方法,因为它基本上等同于猴子补丁,并且如果重新部署 IAC 将被覆盖。不过你可以试试。由于我使用 IAC 作为我的东西,我没有测试过这种方法,但我猜它是可编辑的。

    关于SSL 证书未在 Google Cloud Console GKE 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67690268/

    相关文章:

    Python 请求抛出 SSL 错误

    python - 403 权限缺失或不足

    kubernetes - 地形 GKE x509 : certificate signed by unknown authority

    azure - 如何从 Azure 导入证书?

    java - 使用 mongo-java-driver 使用 x509 证书对 MongoDB v2.6 进行身份验证时遇到问题

    google-app-engine - 基于 App Engine 上的另一个服务预热或启动服务

    tensorflow - 使用GPU将tensorflow服务模型部署到kubernetes时出现意外错误

    google-kubernetes-engine - GCP Composer Airflow 任务卡住或卡住

    linux - 如何在使用 gcsfuse 创建的 Linux 中卸载 Google Bucket

    apache - 将网站重定向到 https