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

Joj*_*ojo 5 python postgresql psycopg2

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

任何帮助,将不胜感激

我的 psycopg2 connect 语句如下所示,并给出一个错误,指出它需要客户端证书:

conn = psycopg2.connect(
            user="postgres",
            password="password",
            host="{IP_ADDRESS}",
            port="5432",
            database="testdb",
            sslmode="require",
}
Run Code Online (Sandbox Code Playgroud)

Joj*_*ojo 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"
Run Code Online (Sandbox Code Playgroud)

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

sslrootcert=server-ca.pem
sslcert=client-cert.pem
sslkey=client-key.pem
Run Code Online (Sandbox Code Playgroud)

确保运行

$ chmod 0600 client-key.pem
Run Code Online (Sandbox Code Playgroud)

否则不会起作用