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

如何在PySpark JDBC连接中配置SSL证书连接GCP PostgreSQL

PySpark JDBC连接GCP PostgreSQL的SSL证书配置

错误原因

你遇到的FATAL: connection requires a valid client certificate错误,是因为GCP Cloud SQL(PostgreSQL)启用了双向SSL认证,要求客户端提供合法证书才能建立连接,仅开启ssl=True和sslmode=require不足以满足验证要求。

配置步骤与代码示例

需要在JDBC选项中添加SSL相关参数,指定本地证书文件的路径,修改后的代码如下:

df2 = spark.read.format('jdbc')\
              .option('driver', 'org.postgresql.Driver')\
              .option('url', 'jdbc:postgresql://<GCP_POSTGRES_HOST>:<PORT>/<DB_NAME>?sslmode=verify-full')\
              .option('dbtable', '<TABLE_NAME>')\
              .option('user', '<DB_USER>')\
              .option('password', '<DB_PASSWORD>')\
              # SSL核心配置
              .option('ssl', 'true')\
              .option('sslrootcert', '/path/to/server-ca.pem')  # GCP服务器根证书本地路径
              .option('sslcert', '/path/to/client-cert.pem')    # 客户端证书本地路径
              .option('sslkey', '/path/to/client-key.pem')      # 客户端私钥本地路径
              .load()

参数说明

  • sslrootcert:指定GCP提供的服务器根证书(通常名为server-ca.pem),用于验证服务器身份
  • sslcert:指定客户端证书(通常名为client-cert.pem),从GCP Cloud SQL控制台生成下载
  • sslkey:指定客户端私钥(通常名为client-key.pem),注意私钥不能设置密码,若有密码需提前去除
  • sslmode:建议设置为verify-full,确保完全验证服务器身份,避免中间人攻击

注意事项

  • 确保本地证书文件路径正确,Spark进程有权限读取这些文件
  • 若客户端私钥是PKCS#1格式,需转换为PKCS#8格式,执行命令:openssl pkcs8 -topk8 -inform PEM -in client-key.pem -out client-key-pk8.pem -nocrypt
  • GCP的SSL证书可从Cloud SQL控制台的「连接」->「SSL连接」页面下载

内容的提问来源于stack exchange,提问作者Mani Shankar.S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:12:11