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

使用Python连接AWS不同区域Redshift遇SSL拒绝错误求助

解决Redshift跨区域SSL连接拒绝问题

核心原因

Redshift不同AWS区域确实使用不同的根证书,redshift_connector默认携带的证书集合未包含ap-southeast-1区域的根证书,导致SSL握手失败;而AWS CLI会自动适配对应区域的证书逻辑,因此能正常连接。

解决方案

1. 指定对应区域的SSL证书路径

AWS为每个Redshift区域提供了专属根证书,你需要下载ap-southeast-1区域的证书并在连接时指定:

  • 获取证书:从AWS官方提供的区域证书包中提取rs-ca-ap-southeast-1.pem文件
  • 修改连接代码,添加SSL相关参数:
import redshift_connector
import logging

logging.basicConfig(level=logging.DEBUG)

connection = redshift_connector.connect(
        database='my_db',
        host='redshift_host_ap_southeast_1',
        port=5439,
        user='username',
        password='password',
        ssl=True,
        sslmode='verify-full',
        sslrootcert='/your/local/path/rs-ca-ap-southeast-1.pem'  # 替换为实际证书路径
)

cur = connection.cursor()

2. 临时调整SSL验证模式(测试用)

如果暂时无法获取证书,可先将SSL模式调整为require(仅建立SSL连接,不验证证书有效性),确认连接是否能正常建立:

connection = redshift_connector.connect(
        # 保留原有参数
        sslmode='require'
)

注意:此方法仅用于排查问题,生产环境必须使用verify-full模式确保连接安全性。

3. 检查Redshift集群SSL配置

登录AWS控制台,确认ap-southeast-1区域的Redshift集群SSL设置:

  • 进入集群详情页,查看数据库配置中的SSL连接选项
  • 若设置为强制SSL连接,必须使用对应区域的有效证书验证;若为允许SSL连接,可尝试降低SSL模式适配

补充说明

us-east-2区域能正常连接,是因为redshift_connector默认证书包包含了该区域的根证书,而ap-southeast-1的证书不在默认集合内,因此需要手动指定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:46:20