我正在尝试在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的正确方法是什么?
答案 0 :(得分:0)
因此,这不能解决此处描述的问题,但可以解决我在配置pgjdbc时遇到的问题。
如果要将证书PEM文件作为资源文件传递到pgjdbc,请将以下配置添加到属性文件:
sslfactory = org.postgresql.ssl.SingleCertValidatingFactory
sslfactoryarg = classpath:rds-combined-ca-bundle.pem
SingleCertValidatingFactory
接受对文件的其他类型的引用,如classhpath,文件路径,环境变量,系统变量或证书文本本身。有关更多信息,请参见类文档here。