gpt4 book ai didi

postgresql - 使用自签名证书的 SSL POSTGRES 连接

转载 作者:行者123 更新时间:2023-12-04 22:35:49 26 4
gpt4 key购买 nike

我是 SSL 新手,所以我首先阅读了大量教程、主题、论坛...资料很多,有点复杂。我正在尝试在我的计算机和不同服务器上的 Postgresql 实例之间建立 SSL 连接。为此,我一步一步地工作。

  1. 检查两者之间的连接是否在没有 SSL 的情况下工作

    • 通过命令行连接我自己:好的!

    psql "hostaddr=X.X.X.X port=5432 user=postgres dbname=my_db"

    • 通过数据库可视化工具(TeamSql,类似于 PgAdmin 或 MysqlWorkbench)连接我自己:好的!
  2. 生成 key 和证书;我已经按照在线教程学习了(“[]”后面的所有内容都是我隐藏的参数)

创建服务器 key

openssl genrsa -des3 -out server.key 1024
chmod 400 server.key
chown postgres.postgres server.key
openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=FR/ST=[MyCountry]/L=[MyCity]/O=[MyCompany]/CN=postgres/emailAddress=[my@email.com]'

假设根证书是一样的

cp server.crt root.crt

之后,生成客户端。一、关键

openssl genrsa -des3 -out /tmp/postgresql.key 1024

然后是企业社会责任

openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr -subj '/C=FR/ST=[MyCountry]/L=[MyCity]/O=[MyCompany]/CN=postgres'

最后是 CRT

openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial
  1. 在服务器端激活 SSL。在 PG_HBA.CONF 文件中,添加特定行来处理来自外部的 SSL 连接

enter image description here

在 POSTGRESQL.CONF 文件中,修改那些行:

listen_addresses = '*'
[...]
ssl = on
[...]
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
ssl_ca_file = 'root.crt'
  1. 在我的计算机上的/home/user/.postgresql/文件夹中检索 postgresql.key、postgresql.crt 和 root.crt 文件。还更改了 postgresql.key 文件的权限 (600)

  2. 再次尝试第一步。在命令行的情况下,一切正常。但是使用可视化工具,即使激活了 SSL 选项(并使用相同的三个文件),也会有两个结果:

    • 将“拒绝未经授权”选项设置为关闭:它正在运行

    • 将“拒绝未经授权”选项设置为开启:出现错误

Hostname/IP doesn't match certificate's altnames: "IP: X.X.X.X is not in the cert's list: "

(用X.X.X.X我的服务器IP)

所以我的问题是:我做的一切都很好吗?为什么命令行连接和可视化工具有区别?证书生成是否正常?

当然,我不想要真正的 CA 认证。我正在寻找一个自签名的,但即使我遵循了不同的教程,它仍然无法正常工作......感谢您的帮助,周末愉快

最佳答案

我相信这是因为 psql 将在不验证证书的情况下通过 SSL 进行连接,而 TeamSql 正在进行全面验证(据我所知,JDBC 中的默认设置)因此拒绝了证书。

如果您在 psql 中包含“sslmode=verify-full”标志,您应该得到与 TeamSql 相同的响应。

关于postgresql - 使用自签名证书的 SSL POSTGRES 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53450299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com