Google Cloud Console 提示我们 Google Cloud SQL 实例上的证书即将到期。
我们有多个服务连接到该数据库实例:
- 计算引擎(通过 Cloud SQL 代理 -
cloud_sql_proxy_x64
) - 应用引擎
- 桌面(通过 Cloud SQL Proxy -
cloud_sql_proxy_x64
)
问题
当我们轮换证书时,是否需要重新启动所有设备才能获得新连接?或者,服务是否仅在需要时才使用新证书?
Compute Engine 实例会失去与 SQL 服务器的连接吗?
我是否需要删除 AppEngine 实例来强制它们重新连接,或者它们会继续运行吗?
我们正在努力避免此工作期间出现停机。感谢您的见解。
这是 Cloud SQL 仪表板上显示的内容:
答案1
简短回答:在您当前使用 Cloud SQL Proxy 和 App Engine 中的托管服务的部署中,您应该能够进行此更改不会造成停机。
我建议查看 Cloud SQL 文档证书轮换(与 MySQL 相关的文档;有一个PostgreSQL 的类似文档文件中有几点值得注意:
SSL/TLS 的显式配置是仅有的使用 IP 地址直接连接到实例时需要:
当您使用 IP 地址连接到 Cloud SQL 时,需要 SSL/TLS 来提供安全性。
如果您使用 Cloud SQL Proxy 组件,它将代表您处理与数据库实例的连接封装和保护。这包括 Cloud SQL Proxy 的另一个主要优点:无需明确将连接主机的 IP 列入白名单,这在主机使用临时 IP 地址的云环境中可能是不可能的。
Cloud SQL 使用自签名 TLS 证书:
Cloud SQL 使用自签名的每个实例服务器证书
对于使用 IP 地址直接连接的任何应用来说,这一点都很重要。为了确保它们与合法的 Cloud SQL 主机通信,应将此类应用配置为在初始连接时验证服务器证书。由于证书是自签名的,因此只有在拥有证书的本地副本以供比较时,它们才能这样做。
这就是多步骤更新过程的原因。在主机上启用证书之前,您可以下载新证书并配置应用程序以接受新旧证书。
使用新服务器证书下载的文件包含当前证书和即将推出的(新)证书,因此无论连接点服务器上哪个版本的证书是“当前”的,这都适用于与实例建立的连接。最重要的要求是,在所有通过 IP 连接的下游客户端都收到新证书文件之前,不要将“即将推出的”证书设为“当前”,因为它们将无法验证服务器的真实性。