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

eaf3rand  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(2)|浏览(130)

我已经创建了一个Google PostgreSQL示例,我试图从远程Web服务器操作它,我已经将IP列入白名单并打开了仅SSL模式。我创建了客户端证书,但我不知道将它们放在哪里或如何引用它们。我在网上找不到任何关于它的信息。
任何帮助将不胜感激
我的psycopg2 connect语句看起来像这样,并给我一个错误,说它需要客户端证书:

conn = psycopg2.connect(
            user="postgres",
            password="password",
            host="{IP_ADDRESS}",
            port="5432",
            database="testdb",
            sslmode="require",
}

字符串

eivgtgni

eivgtgni1#

我自己弄明白了,我得到了一些关于如何连接psql的说明,这也适用于psycopg2。
谷歌告诉我,我可以通过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


不然就不行了

ahy6op9u

ahy6op9u2#

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

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

根据您使用的连接工具,这三项的指定方式不同。例如,当使用psql命令行客户端进行连接时,这三个文件是psql连接字符串中sslrootcertsslcertsslkey参数的值。
如果你需要更多的细节,这里有一些步骤使用公共IP连接psql客户端

相关问题