You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP中Spring Boot应用连接Cloud SQL私有IP及SSL仅公网配置疑问

解决方案:Spring Boot连接Cloud SQL(私有IP无SSL+公网IP强制SSL)

嘿,我来帮你把这个问题拆解清楚,分配置步骤和SSL flag的作用范围两部分来说:

一、配置Spring Boot通过私有IP连接Cloud SQL

首先得确保你的Cloud SQL实例已经开启了私有IP(和你的Spring Boot应用在同一个VPC,或者通过VPC peering打通),然后按下面步骤配置:

  • 替换数据库连接URL里的公网IP为私有IP,比如:
    jdbc:mysql://10.xxx.xxx.xxx:3306/your_database_name
  • 私有IP走的是Google内部VPC网络,本身就自带安全加密,所以不需要额外配置SSL参数,直接就能正常连接。如果你想主动开启SSL也可以,但完全不是强制要求。

二、关于“SSL only” flag的作用范围(划重点!)

你疑惑的这个flag,它只适用于公网IP的连接,对私有IP连接没有限制。
具体来说:

  • 当你开启这个flag后,所有通过公网IP访问Cloud SQL的请求必须携带SSL加密,否则会被直接拒绝;
  • 但私有IP的连接不受这个规则约束,即使不使用SSL,也能正常建立连接——因为VPC内部流量本身就在Google的加密网络里传输,安全性已经有保障,所以不需要强制SSL。
    刚好符合你“仅对公网IP启用SSL”的需求!

三、公网IP的SSL配置(Spring Boot端)

如果要让公网IP连接强制SSL,需要在Spring Boot里做这些配置:

  1. 从Cloud SQL控制台的「SSL」页面下载三个证书文件:server-ca.pem、client-cert.pem、client-key.pem
  2. 在application.properties(或application.yml)里添加SSL相关参数,举个MySQL的例子:
spring.datasource.url=jdbc:mysql://[公网IP]:3306/your_database_name?useSSL=true&requireSSL=true&sslCa=/path/to/server-ca.pem&sslCert=/path/to/client-cert.pem&sslKey=/path/to/client-key.pem
spring.datasource.username=your_db_user
spring.datasource.password=your_db_password

如果是PostgreSQL,参数会略有不同,核心都是指定CA证书、客户端证书和密钥的路径,强制SSL连接。

内容的提问来源于stack exchange,提问作者Ruslan Muhamadiarov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:17:51