我创建了一个Google PostgreSQL实例,并尝试从远程Web服务器对其进行操作,我将该IP列入了白名单并启用了仅SSL模式。我创建了客户端证书,但是对于放在哪里或如何引用它们一无所知。我在网上找不到任何东西。
任何帮助将不胜感激
我的psycopg2 connect语句如下所示,并给我一个错误,提示它需要客户端证书:
conn = psycopg2.connect(
user="postgres",
password="password",
host="{IP_ADDRESS}",
port="5432",
database="testdb",
sslmode="require",
}
答案 0 :(得分:1)
由于您已经创建了客户端证书以使用SSL连接到您的实例,因此必须要查找三件事:
根据要使用的连接工具,以不同的方式指定这三个项目。例如,使用psql命令行客户端连接时,这三个文件是 sslrootcert , sslcert 和 sslkey 参数的值。 psql连接字符串。有关使用SQL客户端和SSL / TLS的连接的更多信息,请参见Connecting with psql Client
如果您需要更多详细信息,请按以下步骤操作Connecting psql client using public IP
答案 1 :(得分:0)
我自己弄清楚了,我得到了一些有关如何与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"
所以我编辑了connect函数以添加以下键:
sslrootcert=server-ca.pem
sslcert=client-cert.pem
sslkey=client-key.pem
确保运行
$ chmod 0600 client-key.pem
否则将无法正常工作