我们有一个Windows EC2
实例,我们正在运行一个自定义命令行应用程序(使用NpgSQL的C#控制台应用程序)来连接到PostgreSQL RDS实例。根据这里的说明:
我们使用rds.force_ssl set
创建了一个新的数据库参数组到1
并重新启动了我们的RDS实例。我们还下载并导入了Windows页面上引用的pem文件。
我能够通过pgAdmin通过指定SSL mode as Verify-Full
从我的Windows EC2实例连接到RDS实例。我们的命令行应用程序从文件中读取连接字符串,现在我已经添加了sslmode参数,它们看起来像这样:
Server=OurInstanceAddress;Port=5432;SearchPath='$user,public,topology';Database=OurDatabase;User Id=username;Password=mypassword;sslmode=verify-full;
使用此连接字符串失败,并显示页面底部引用的错误:
FATAL: no pg_hba.conf entry for host "host.ip", user "someuser", database "postgres", SSL off
我尝试添加sslrootcert参数,但我不确定我是否正确处理它。我尝试使用示例(sslrootcert = rds-ssl-ca-cert.pem),我尝试使用我下载的pem的名称。我觉得我提供给sslrootcert参数的路径信息有些不对,特别是在Windows环境中。我尝试过使用这个名字,我尝试过使用以下路径:
- sslrootcert=C:\keys\rds-combined-ca-bundle.pem - single backslash
- sslrootcert=C:\\\keys\\\rds-combined-ca-bundle.pem - double backslash
- sslrootcert=C:/keys/rds-combined-ca-bundle.pem - Linux style backslash
所有这些都产生了上述相同的错误。
任何见解都将受到赞赏。
答案 0 :(得分:1)
我使用环境变量解决了它,而不是在连接url中指定证书路径
-DPGSSLROOTCERT=/certs/root.crt
-DPGSSLKEY=/certs/amazon-postgresql.key
-PGSSLCERT=/certs/amazon-postgresql.crt
虽然我在cygwin。在这里使用Windows https://www.postgresql.org/docs/9.0/static/libpq-ssl.html
时,文档中有一些提示