尝试使用 psycopg2 连接到远程数据库时,将 ssl 证书放在哪里?

问题描述 投票:0回答:2

我已经创建了一个 Google PostgreSQL 实例,我正在尝试从远程网络服务器操作它,我已将 IP 列入白名单并打开仅 SSL 模式。我创建了客户端证书,但我不知道将它们放在哪里或如何引用它们。我在网上找不到任何相关信息。

如有任何帮助,我们将不胜感激

我的 psycopg2 连接语句看起来像这样,并给我一个错误,说它需要客户端证书:

conn = psycopg2.connect(
            user="postgres",
            password="password",
            host="{IP_ADDRESS}",
            port="5432",
            database="testdb",
            sslmode="require",
}
python postgresql psycopg2
2个回答
5
投票

我自己弄清楚了,我得到了一些关于如何连接 psql 的说明,这也适用于 psycopg2。

Google 指示我可以使用以下终端命令通过 psql 进行连接:

  psql "sslmode=verify-ca sslrootcert=server-ca.pem \
      sslcert=client-cert.pem sslkey=client-key.pem \
      hostaddr={IP_ADDRESS} \
      port=5432 \
      user=postgres dbname=postgres"

所以我编辑了连接函数来添加这些键:

sslrootcert=server-ca.pem
sslcert=client-cert.pem
sslkey=client-key.pem

确保跑步

$ chmod 0600 client-key.pem

不然不行


2
投票

由于您已创建客户端证书来使用 SSL 连接到您的实例,因此必须查找三件事:

  • 服务器证书另存为 server-ca.pem
  • A 客户端公钥证书另存为 client-cert.pem
  • A 客户端私钥另存为 client-key.pem

根据您使用的连接工具的不同,这三项的指定方式也有所不同。例如,使用 psql 命令行客户端连接时,这三个文件是 psql 连接字符串中的 sslrootcertsslcertsslkey 参数的值。

如果您需要更多详细信息,请执行以下步骤使用公共 IP 连接 psql 客户端

© www.soinside.com 2019 - 2024. All rights reserved.