【问题标题】:Connecting to RedShift results in SSL error: certificate verify failed连接到 RedShift 导致 SSL 错误:证书验证失败
【发布时间】: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 错误:证书验证失败

我已按照亚马逊的说明完成了所有步骤:

  1. Transitioning to ACM Certificates for SSL Connections: Using Other SSL Connection Types

  2. 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


【解决方案1】:

我能够使用 pypyodbc 和以下连接字符串成功连接(详细信息已编辑):

connection = pypyodbc.connect('Driver={Amazon Redshift (x64)};'
                              'Server=<server>;'
                              'Database=<database>;'
                              'UID=<login>;'
                              'PWD=<password>;'
                              'Port=5439;'
                              'Trusted_Connection=True')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 2015-06-05
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    相关资源
    最近更新 更多