我已经创建了一个 Google PostgreSQL 实例,我正在尝试从远程网络服务器操作它,我已将 IP 列入白名单并打开仅 SSL 模式。我创建了客户端证书,但我不知道将它们放在哪里或如何引用它们。我在网上找不到任何相关信息。
如有任何帮助,我们将不胜感激
我的 psycopg2 连接语句看起来像这样,并给我一个错误,说它需要客户端证书:
conn = psycopg2.connect(
user="postgres",
password="password",
host="{IP_ADDRESS}",
port="5432",
database="testdb",
sslmode="require",
}
我自己弄清楚了,我得到了一些关于如何连接 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
不然不行
由于您已创建客户端证书来使用 SSL 连接到您的实例,因此必须查找三件事:
根据您使用的连接工具的不同,这三项的指定方式也有所不同。例如,使用 psql 命令行客户端连接时,这三个文件是 psql 连接字符串中的 sslrootcert、sslcert 和 sslkey 参数的值。
如果您需要更多详细信息,请执行以下步骤使用公共 IP 连接 psql 客户端