0

我正在尝试在 PostgreSQL 和 AWS Lambda 之间配置 SSL 连接。问题是将 AWS 证书 PEM 文件传递​​给 pgjdbc。

我将 PEM 文件添加到我的资源文件夹中,并尝试通过以下方式获取它的位置:

Thread.currentThread().getContextClassLoader().getResource("rds-combined-ca-bundle.pem").toString();

它返回:

file:/var/task/rds-combined-ca-bundle.pem

但是,如果我将其作为sslrootcert属性传递,则会出现异常:

org.postgresql.util.PSQLException:无法打开 SSL 根证书文件文件:/var/task/rds-combined-ca-bundle.pem。

然后我决定运行一个代码,打印我的 Lambda 中的所有目录和文件名,盯着当前文件夹,然后我rds-combined-ca-bundle.pem在当前目录中获取文件。

从我的资源中获取 PEM 文件并将其传递给 pgjdbc 的正确方法是什么?

4

1 回答 1

2

所以这不会解决这里描述的问题,但它会解决我在配置 pgjdbc 时遇到的问题。

如果要将证书 PEM 文件作为资源文件传递给 pgjdbc,请将以下配置添加到属性文件中:

sslfactory = org.postgresql.ssl.SingleCertValidatingFactory
sslfactoryarg = classpath:rds-combined-ca-bundle.pem

SingleCertValidatingFactory接受对文件的其他类型的引用,如类路径、文件路径、环境变量、系统变量或证书文本本身。有关更多信息,请参阅此处的类文档。

于 2019-07-09T19:33:07.887 回答