【发布时间】:2019-04-17 00:49:21
【问题描述】:
我正在尝试通过 Python 2.7 / sqlalchemy (1.2.14) / psycopg2 (2.7.6.1) 连接到 RedShift 数据库,但在配置 SSL 属性时遇到了问题:
from sqlalchemy import create_engine
connection = create_engine('redshift+psycopg2://(username:password)@(server):5439/(database)?sslmode=verify-full').connect()
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) SSL 错误:证书验证失败
我已按照亚马逊的说明完成了所有步骤:
Transitioning to ACM Certificates for SSL Connections: Using Other SSL Connection Types
Install and Configure the Amazon Redshift ODBC Driver on Microsoft Windows Operating Systems
所以我现在将最新版本的 redshift-ca-bundle.crt 作为 root.crt 保存到我的 %APPDATA%\postgresql 文件夹中。我还安装了 32 位和 64 位驱动程序,并在成功验证服务器连接的两个 ODBC 管理工具(32 和 64)中配置了系统 DSN。
在我的 Python 代码中正确配置 SSL 以进行连接,我缺少什么?我知道连接需要 SSL,但不确定如何提供正确的证书。
【问题讨论】:
-
我注意到 sqlalchemy 将完全相同的 redshift-ca-bundle.crt 文件安装到以下目录。不确定我是否需要以某种方式使用它? C:\Python27\Lib\site-packages\sqlalchemy_redshift
-
可能需要 SSL,但需要验证证书吗?你可以试试
ssl-mode=require。另外,我不是 psycopg2 专家,但你在哪里使用 ODBC DSN 连接? -
更改为 ssl-mode=require 时出现同样的错误。我不确定 ODBC DSN 部分——老实说,这很新。但我将尝试使用 ODBC 连接。
标签: python ssl sqlalchemy amazon-redshift psycopg2