从 Windows 客户端到 AWS RDS Postgresql 实例的 SSL 连接

Chr*_*ull 6 postgresql aws ssl amazon-rds

我正在尝试使用安全 SSL 连接连接到托管在 AWS RDS 上的 PG 实例。我在哪里将公钥存储在 Windows 上以便它自动应用于连接?

请注意,当我打开 PGAdmin 时,它只允许我指定 .crt 和 .key 文件。有没有办法将它指向 .pem 文件?

我下载了这里引用的公钥:http : //docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.SSL

在 Linux 上,将此密钥放入默认的 OpenSSL 目录是一件简单的事情,postgres 似乎可以检测到它并自行处理其余部分。

在 Windows 上,我还没有弄清楚如何执行此操作或将 .pem 文件存储在何处或如何将 PGAdmin 指向 .pem 文件。

Chr*_*ull 2

我找到了答案!原来连接一直都是加密的,只是我没有意识到。男孩这样做让我觉得自己很愚蠢。为了确定这一点,我最终下载了 Wireshark 并嗅探了我的数据包。

请注意,这适用于 ssl 模式“require”,但为了使用 ssl 模式“verify-full”,您仍然需要根证书。在本例中,我只是将rds-combined-ca-bundle.pem其从 .pem 重命名为 .crt。这使我能够从 PGAdmin 连接属性窗口的 SSL 选项卡指向该文件。

这样做我能够指定 ssl 模式“verify-full”并连接到我的实例。

编辑:

默认情况下,RDS Postgres 将接受非 SSL 连接。恰好 PGAdmin 默认启动 SSL 连接。

...如果您不提供 ssl 模式,那么 postgres 将使用默认模式“prefer”进行连接(请参阅上面提到的文档),根据该模式,它将更喜欢 ssl 连接,但如果不可用,它将连接也是非 SSL 连接。 来源

为了确保始终使用 SSL,您可以将该参数设置rds.force_ssl为 1(打开)。更多细节。