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

使用JDBC开启SSL连接Google CloudSQL出现访问被拒绝问题求助

问题排查与缺失配置说明

1. 缺失客户端证书keystore配置

Cloud MySQL的SSL连接默认启用双向认证,除了验证服务端证书的truststore之外,你还需要将获取到的client-key.pem和client-cert.pem打包生成keystore文件,并在代码中配置对应的系统属性:

  • 生成keystore的步骤:
    • 先将pem格式的客户端证书和密钥转换为pkcs12格式,命令行执行:
      openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -name "mysqlclient" -passout pass:<自定义keystore密码> -out client-keystore.p12
    • 再将pkcs12转换为jks格式keystore,命令行执行:
      keytool -importkeystore -srckeystore client-keystore.p12 -srcstoretype pkcs12 -srcstorepass <刚才设置的密码> -destkeystore keystore.jks -deststoretype jks -deststorepass <自定义jks密码>
    • 代码中补充keystore相关配置:
      System.setProperty("javax.net.ssl.keyStore", "D://keystore.jks");
      System.setProperty("javax.net.ssl.keyStorePassword", "<你设置的jks密码>");
      

2. 连接地址与网络权限检查

  • 如果你代码中填的连接地址是localhost:3306,需要确认你本地已经启动了Cloud SQL Auth代理,并且代理已经正确绑定到目标Cloud MySQL实例。
  • 如果没有使用Auth代理,需要将连接地址替换为Cloud MySQL实例的公网/私网访问地址,同时确认你本地客户端的公网IP已经添加到Cloud MySQL实例的授权网络列表中。

3. 账号权限与连接参数校验

  • 确认你使用的数据库账号已经被授权允许从你当前访问的IP地址登录,Cloud MySQL的账号可以限制允许登录的客户端地址,默认如果创建时选择的是%(任意地址)则不需要额外调整。
  • 如果你使用的是8.x版本的MySQL JDBC驱动,需要将驱动类改为com.mysql.cj.jdbc.Driver,避免类加载异常。
  • 可以在JDBC连接参数中补充证书相关参数直接在连接串中配置,避免全局系统属性影响其他连接,连接串示例:
    jdbc:mysql://<你的CloudSQL实例地址>:3306/dbname?verifyServerCertificate=true&useSSL=true&requireSSL=true&clientCertificateKeyStoreUrl=file:D:/keystore.jks&clientCertificateKeyStorePassword=<keystore密码>&trustCertificateKeyStoreUrl=file:D:/truststore.jks&trustCertificateKeyStorePassword=<truststore密码>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:06:05